xref: /phasta/phSolver/common/genshp.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine genshp (shp,    shgl, nshp, nblk)
2*59599516SKenneth E. Jansenc
3*59599516SKenneth E. Jansenc----------------------------------------------------------------------
4*59599516SKenneth E. Jansenc
5*59599516SKenneth E. Jansenc This subroutine generates shape functions for triangular,
6*59599516SKenneth E. Jansenc quadrilateral, tetrahedron, wedge and brick elements and pyramids.
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc Christian Whiting, Winter 1999
9*59599516SKenneth E. Jansenc----------------------------------------------------------------------
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansen        include "common.h"
12*59599516SKenneth E. Jansenc
13*59599516SKenneth E. Jansen        dimension shp(MAXTOP,maxsh,MAXQPT),
14*59599516SKenneth E. Jansen     &            shgl(MAXTOP,nsd,maxsh,MAXQPT)
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc.... loop through element blocks
17*59599516SKenneth E. Jansenc
18*59599516SKenneth E. Jansen        maxnint=1
19*59599516SKenneth E. Jansen          do iblk = 1, nblk
20*59599516SKenneth E. Jansenc
21*59599516SKenneth E. Jansenc.... get coord. system and element type
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansen            lcsyst = lcblk(3,iblk)
24*59599516SKenneth E. Jansen            nshl   = lcblk(10,iblk)
25*59599516SKenneth E. Jansenc
26*59599516SKenneth E. Jansenc.... generate the shape-functions in local coordinates
27*59599516SKenneth E. Jansenc
28*59599516SKenneth E. Jansen            select case ( lcsyst )
29*59599516SKenneth E. Jansen            case ( 1 )          ! tets
30*59599516SKenneth E. Jansen               maxnint=max(maxnint,nint(lcsyst))
31*59599516SKenneth E. Jansen            do i=1,nint(lcsyst)
32*59599516SKenneth E. Jansen               call shpTet(ipord,Qpt(1,1:3,i),shp(1,:,i),shgl(1,:,:,i))
33*59599516SKenneth E. Jansen            enddo
34*59599516SKenneth E. Jansen            shgl(1,:,1:nshl,1:nint(lcsyst)) =
35*59599516SKenneth E. Jansen     &      shgl(1,:,1:nshl,1:nint(lcsyst))/two
36*59599516SKenneth E. Jansenc
37*59599516SKenneth E. Jansen            case ( 2 )          ! hexes
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansen               maxnint=max(maxnint,nint(lcsyst))
40*59599516SKenneth E. Jansen            do i=1,nint(lcsyst)
41*59599516SKenneth E. Jansen               call shphex  (ipord, Qpt(2,1:3,i),shp(2,:,i),
42*59599516SKenneth E. Jansen     &                       shgl(2,:,:,i))
43*59599516SKenneth E. Jansen            enddo
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansen            case ( 3 )          ! wedges
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansen               maxnint=max(maxnint,nint(lcsyst))
48*59599516SKenneth E. Jansen            do i=1,nint(lcsyst)
49*59599516SKenneth E. Jansen               call shp6w  (ipord,Qpt(3,1:3,i),shp(3,:,i),
50*59599516SKenneth E. Jansen     &                       shgl(3,:,:,i))
51*59599516SKenneth E. Jansen            enddo
52*59599516SKenneth E. Jansen
53*59599516SKenneth E. Jansen         case ( 5)              ! pyramids
54*59599516SKenneth E. Jansen
55*59599516SKenneth E. Jansen               maxnint=max(maxnint,nint(lcsyst))
56*59599516SKenneth E. Jansen            do i=1,nint(lcsyst)
57*59599516SKenneth E. Jansen               call shppyr (ipord,Qpt(5,1:3,i),shp(5,:,i),shgl(5,:,:,i))
58*59599516SKenneth E. Jansen
59*59599516SKenneth E. Jansen            enddo
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansenc.... nonexistent element
62*59599516SKenneth E. Jansenc
63*59599516SKenneth E. Jansen            case default
64*59599516SKenneth E. Jansenc
65*59599516SKenneth E. Jansen            call error ('genshp  ', 'elem Cat', lelCat)
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansen            end select
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansenc.... end of generation
70*59599516SKenneth E. Jansenc
71*59599516SKenneth E. Jansen          enddo
72*59599516SKenneth E. Jansenc
73*59599516SKenneth E. Jansenc.... return
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen        return
76*59599516SKenneth E. Jansen        end
77