1!$Id:$
2      subroutine pltelm(x,ie,ix,scale,nie,ndm,nen1,n1,n2)
3
4!      * * F E A P * * A Finite Element Analysis Program
5
6!....  Copyright (c) 1984-2017: Regents of the University of California
7!                               All rights reserved
8
9!-----[--+---------+---------+---------+---------+---------+---------+-]
10!      Purpose: Place element numbers on plots of mesh
11
12!      Inputs:
13!         x(ndm,*)  - Nodal coordinates of mesh
14!         ie(nie,*) - Assembly data for material sets
15!         ix(nen1,*)- Element nodal connections
16!         scale     - Plot scale factor
17!         nie       - Dimension of ie array
18!         ndm       - Dimension of x array
19!         nen1      - Dimension of ix array
20!         n1        - First element number to display
21!         n2        - Last element number to display
22
23!      Outputs:
24!         none      - Plot outputs to screen/file
25!-----[--+---------+---------+---------+---------+---------+---------+-]
26      implicit  none
27
28      include  'pbody.h'
29      include  'pdata4.h'
30      include  'plflag.h'
31
32      logical   zoom
33      integer   nie,ndm,nen1, i,j,n,ii,jj,nn,ma,nd, n1,n2, iplt(50)
34      real*8    scale,dx1
35
36      integer   ie(nie,*),ix(nen1,*)
37      real*8    x(ndm,*),xx(3)
38
39      save
40
41!     Write element labels
42
43      dx1 = .005d0/scale
44      nd = 2
45      do n = n1,n2
46        ma = ix(nen1,n)
47        if(ix(nen1-1,n).ge.0 .and. ma.gt.0 .and.
48     &            (maplt.eq.0 .or. ma.eq.maplt)) then
49          xx(1) = 0.0d0
50          xx(2) = 0.0d0
51          xx(3) = 0.0d0
52          jj = 0
53          call pltord(ix(1,n),ie(nie-1,ma), nn,iplt)
54          nn = max(1,nn-1)
55          do i = 1,nn
56            j  = iplt(i)
57            ii = ix(j,n)
58            if(ii.gt.0) then
59              jj = jj + 1
60              xx(1) = xx(1) + x(1,ii)
61              xx(2) = xx(2) + x(2,ii)
62              if(ndm.ge.3) xx(3) = xx(3) + x(3,ii)
63            endif
64          end do ! i
65          if(jj.gt.0) then
66            xx(1) = xx(1)/jj
67            xx(2) = xx(2)/jj
68            xx(3) = xx(3)/jj
69            if(zoom(xx(1),ndm)) then
70              call plotl(xx(1)-dx1*nd,xx(2)-dx1,xx(3),3)
71              if(clip) call plabl(n)
72            endif
73          endif
74        endif
75      end do ! i
76
77      end
78