subroutine aptpent (n, n1, n2, n3, n4, n5, vx, vy, vz,
     &                    ax, ay, az, bx, by, bz, cx, cy, cz)

ccbeg.
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c
c                             SUBROUTINE APTPENT
c
c     call aptpent (n, n1, n2, n3, n4, n5, vx, vy, vz,
c    &              ax, ay, az, bx, by, bz, cx, cy, cz)
c
c     Version:  aptpent  Updated    1989 December 27 15:40.
c               aptpent  Originated 1989 November 2 14:10.
c
c     Author:   Arthur L. Edwards, LLNL, L-298, Telephone (925) 422-4123.
c
c
c     Purpose:  To make 5 triangles from a pentagonal face of a regular
c               dodecahedron inscribed in a unit sphere.
c
c     Input:    n, n1, n2, n3, n4, n5, vx, vy, vz.
c
c     Output:   ax, ay, az, bx, by, bz, cx, cy, cz.
c
c     Glossary:
c
c     ax,ay,az  Output   The x, y, z coordinates of first triangle vertex.
c                          An array.
c
c     bx,by,bz  Output   The x, y, z coordinates of second triangle vertex.
c                          An array.
c
c     cx,cy,cz  Output   The x, y, z coordinates of third triangle vertex.
c                          An array.
c
c     n         In/Out   Current index in table of triangles.
c
c     n1-n5     Input    Indices of pentagon vertices in (vx, vy, vz) table.
c
c     vx,vy,vz  Input    The x, y, z coordinates of a dodecahedron vertex on a
c                          unit sphere.  An array.
c
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
ccend.

c.... Dimensioned arguments.

c---- Coordinate x of triangle vertex.
      dimension ax      (1)
c---- Coordinate y of triangle vertex.
      dimension ay      (1)
c---- Coordinate z of triangle vertex.
      dimension az      (1)
c---- Coordinate x of triangle vertex.
      dimension bx      (1)
c---- Coordinate y of triangle vertex.
      dimension by      (1)
c---- Coordinate z of triangle vertex.
      dimension bz      (1)
c---- Coordinate x of triangle vertex.
      dimension cx      (1)
c---- Coordinate y of triangle vertex.
      dimension cy      (1)
c---- Coordinate z of triangle vertex.
      dimension cz      (1)
c---- Coordinate x of dodecahedron vertex.
      dimension vx      (1)
c---- Coordinate y of dodecahedron vertex.
      dimension vy      (1)
c---- Coordinate z of dodecahedron vertex.
      dimension vz      (1)

c.... Local variables.

c---- Radius at center of pentagon.
      common /laptpent/ rcen
c---- Coordinate x of pentagon center.
      common /laptpent/ xcen
c---- Coordinate y of pentagon center.
      common /laptpent/ ycen
c---- Coordinate z of pentagon center.
      common /laptpent/ zcen
cbugc***DEBUG begins.
cbug      common /laptpent/ i
cbug 9901 format (/ 'aptpent finding 5 triangles on a reqular pentagon.')
cbug 9902 format ('  n,n1,n2,n3,n4,n5=',6i5)
cbug      write (3, 9901)
cbug      write (3, 9902) n, n1, n2, n3, n4, n5
cbugc***DEBUG ends.

c.... Find center of pentagon, projected to surface of sphere.

      xcen = 0.2 * (vx(n1) + vx(n2) + vx(n3) + vx(n4) + vx(n5))
      ycen = 0.2 * (vy(n1) + vy(n2) + vy(n3) + vy(n4) + vy(n5))
      zcen = 0.2 * (vz(n1) + vz(n2) + vz(n3) + vz(n4) + vz(n5))
      rcen = sqrt (xcen**2 + ycen**2 + zcen**2)
      xcen = xcen / rcen
      ycen = ycen / rcen
      zcen = zcen / rcen

c.... Find vertices of 5 triangles, on surface of sphere.

c---- Triangle 1.
      n = n + 1

      ax(n) = xcen
      ay(n) = ycen
      az(n) = zcen

      bx(n) = vx(n1)
      by(n) = vy(n1)
      bz(n) = vz(n1)

      cx(n) = vx(n2)
      cy(n) = vy(n2)
      cz(n) = vz(n2)

c---- Triangle 2.
      n = n + 1

      ax(n) = xcen
      ay(n) = ycen
      az(n) = zcen

      bx(n) = vx(n2)
      by(n) = vy(n2)
      bz(n) = vz(n2)

      cx(n) = vx(n3)
      cy(n) = vy(n3)
      cz(n) = vz(n3)

c---- Triangle 3.
      n = n + 1

      ax(n) = xcen
      ay(n) = ycen
      az(n) = zcen

      bx(n) = vx(n3)
      by(n) = vy(n3)
      bz(n) = vz(n3)

      cx(n) = vx(n4)
      cy(n) = vy(n4)
      cz(n) = vz(n4)

c---- Triangle 4.
      n = n + 1

      ax(n) = xcen
      ay(n) = ycen
      az(n) = zcen

      bx(n) = vx(n4)
      by(n) = vy(n4)
      bz(n) = vz(n4)

      cx(n) = vx(n5)
      cy(n) = vy(n5)
      cz(n) = vz(n5)

c---- Triangle 5.
      n = n + 1

      ax(n) = xcen
      ay(n) = ycen
      az(n) = zcen

      bx(n) = vx(n5)
      by(n) = vy(n5)
      bz(n) = vz(n5)

      cx(n) = vx(n1)
      cy(n) = vy(n1)
      cz(n) = vz(n1)

cbugc***DEBUG begins.
cbug 9903 format (/ 'aptpent results.')
cbug 9904 format ('  ax,ay,az=',1p3e22.14 /
cbug     &        '  bx,by,bz=',1p3e22.14 /
cbug     &        '  cx,cy,cz=',1p3e22.14)
cbug      write (3, 9903)
cbug      write (3, 9904) (i, ax(i), ay(i), az(i), bx(i), by(i), bz(i),
cbug     &  cx(i), cy(i), cz(i), i = n - 4, n)
cbugc***DEBUG ends.
      return

c.... End of subroutine aptpent.      (+1 line.)
      end

UCRL-WEB-209832