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