xref: /phasta/phSolver/common/genshpb.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen      subroutine genshpb (shpb,    shglb, nshpb, 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.
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 shpb(MAXTOP,maxsh,MAXQPT),
14*59599516SKenneth E. Jansen     &          shglb(MAXTOP,nsd,maxsh,MAXQPT)
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc.... loop through element blocks
17*59599516SKenneth E. Jansenc
18*59599516SKenneth E. Jansen      do iblk = 1, nblk
19*59599516SKenneth E. Jansenc
20*59599516SKenneth E. Jansenc.... get coord. system and element type
21*59599516SKenneth E. Jansenc
22*59599516SKenneth E. Jansen
23*59599516SKenneth E. Jansen         lcsyst = lcblkb(3,iblk)
24*59599516SKenneth E. Jansen
25*59599516SKenneth E. Jansenc.... generate the shape-functions in local coordinates
26*59599516SKenneth E. Jansenc
27*59599516SKenneth E. Jansen         select case ( lcsyst )
28*59599516SKenneth E. Jansen         case ( 1 )             ! tets
29*59599516SKenneth E. Jansen            nshl=lcblkb(9,iblk)
30*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
31*59599516SKenneth E. Jansen               call shpTet(ipord,Qptb(1,1:3,i),shpb(1,:,i),
32*59599516SKenneth E. Jansen     &              shglb(1,:,:,i))
33*59599516SKenneth E. Jansen            enddo
34*59599516SKenneth E. Jansen            shglb(1,:,1:nshl,1:nintb(lcsyst)) =
35*59599516SKenneth E. Jansen     &           shglb(1,:,1:nshl,1:nintb(lcsyst))/two
36*59599516SKenneth E. Jansenc
37*59599516SKenneth E. Jansen         case ( 2 )             ! hexes
38*59599516SKenneth E. Jansenc
39*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
40*59599516SKenneth E. Jansen               call shpHex  (ipord, Qptb(2,1:3,i),shpb(2,:,i),
41*59599516SKenneth E. Jansen     &              shglb(2,:,:,i))
42*59599516SKenneth E. Jansen            enddo
43*59599516SKenneth E. Jansenc
44*59599516SKenneth E. Jansen         case ( 3 )             ! wedges with tri bd face
45*59599516SKenneth E. Jansen
46*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
47*59599516SKenneth E. Jansen               call shp6w (ipord,Qptb(3,1:3,i),
48*59599516SKenneth E. Jansen     &              shpb(3,:,i),shglb(3,:,:,i))
49*59599516SKenneth E. Jansen            enddo
50*59599516SKenneth E. Jansenc
51*59599516SKenneth E. Jansen         case ( 4 )             ! wedges with quad bd face
52*59599516SKenneth E. Jansenc
53*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
54*59599516SKenneth E. Jansen               call shp6w (ipord,Qptb(4,1:3,i),
55*59599516SKenneth E. Jansen     &              shpb(4,:,i),shglb(4,:,:,i))
56*59599516SKenneth E. Jansen            enddo
57*59599516SKenneth E. Jansen         case ( 5 )             ! pyramids with quad bd face
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
60*59599516SKenneth E. Jansen               call shppyr (ipord,Qptb(5,1:3,i),
61*59599516SKenneth E. Jansen     &              shpb(5,:,i),shglb(5,:,:,i))
62*59599516SKenneth E. Jansen            enddo
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansen         case ( 6 )             ! pyramids with quad bd face
65*59599516SKenneth E. Jansenc
66*59599516SKenneth E. Jansen            do i=1,nintb(lcsyst)
67*59599516SKenneth E. Jansen               call shppyr (ipord,Qptb(6,1:3,i),
68*59599516SKenneth E. Jansen     &              shpb(6,:,i),shglb(6,:,:,i))
69*59599516SKenneth E. Jansen            enddo
70*59599516SKenneth E. Jansenc
71*59599516SKenneth E. Jansenc.... nonexistent element
72*59599516SKenneth E. Jansenc
73*59599516SKenneth E. Jansen         case default
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen            call error ('genshp  ', 'elem Cat', lelCat)
76*59599516SKenneth E. Jansenc
77*59599516SKenneth E. Jansen         end select
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansenc.... end of generation
80*59599516SKenneth E. Jansenc
81*59599516SKenneth E. Jansen      enddo
82*59599516SKenneth E. Jansenc
83*59599516SKenneth E. Jansenc.... return
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansen      return
86*59599516SKenneth E. Jansen      end
87