xref: /phasta/phSolver/common/genblkPosix.f (revision 9d714148f3212e057272549b3ee56361da59830b)
1*9d714148SKenneth E. Jansen        subroutine genblk (IBKSZ)
2*9d714148SKenneth E. Jansenc
3*9d714148SKenneth E. Jansenc----------------------------------------------------------------------
4*9d714148SKenneth E. Jansenc
5*9d714148SKenneth E. Jansenc  This routine reads the interior elements and generates the
6*9d714148SKenneth E. Jansenc  appropriate blocks.
7*9d714148SKenneth E. Jansenc
8*9d714148SKenneth E. Jansenc Zdenek Johan, Fall 1991.
9*9d714148SKenneth E. Jansenc----------------------------------------------------------------------
10*9d714148SKenneth E. Jansenc
11*9d714148SKenneth E. Jansen        use pointer_data
12*9d714148SKenneth E. Jansenc
13*9d714148SKenneth E. Jansen        include "common.h"
14*9d714148SKenneth E. Jansenc
15*9d714148SKenneth E. Jansen        integer, allocatable :: ientp(:,:)
16*9d714148SKenneth E. Jansen        integer mater(ibksz)
17*9d714148SKenneth E. Jansen        integer intfromfile(50) ! integers read from headers
18*9d714148SKenneth E. Jansen        character*255 fname1
19*9d714148SKenneth E. Jansenc
20*9d714148SKenneth E. Jansen        iel=1
21*9d714148SKenneth E. Jansen        itpblk=nelblk
22*9d714148SKenneth E. Jansen
23*9d714148SKenneth E. Jansen        nelblk=0
24*9d714148SKenneth E. Jansen        mattyp = 0
25*9d714148SKenneth E. Jansen        ndofl = ndof
26*9d714148SKenneth E. Jansen        nsymdl = nsymdf
27*9d714148SKenneth E. Jansen        do iblk = 1, itpblk
28*9d714148SKenneth E. Jansenc
29*9d714148SKenneth E. Jansenc           read(igeom) neltp,nenl,ipordl,nshl, ijunk, ijunk, lcsyst
30*9d714148SKenneth E. Jansen           iseven=7
31*9d714148SKenneth E. Jansenc           call creadlist(igeom,iseven,
32*9d714148SKenneth E. Jansenc     &          neltp,nenl,ipordl,nshl, ijunk, ijunk, lcsyst)
33*9d714148SKenneth E. Jansen           iseven=7
34*9d714148SKenneth E. Jansen           fname1='connectivity interior?'
35*9d714148SKenneth E. Jansen           call readheader(igeom,fname1,intfromfile,iseven,
36*9d714148SKenneth E. Jansen     &                     "integer", iotype)
37*9d714148SKenneth E. Jansen           neltp  =intfromfile(1)
38*9d714148SKenneth E. Jansen           nenl   =intfromfile(2)
39*9d714148SKenneth E. Jansen           ipordl =intfromfile(3)
40*9d714148SKenneth E. Jansen           nshl   =intfromfile(4)
41*9d714148SKenneth E. Jansen           ijunk  =intfromfile(5)
42*9d714148SKenneth E. Jansen           ijunk  =intfromfile(6)
43*9d714148SKenneth E. Jansen           lcsyst =intfromfile(7)
44*9d714148SKenneth E. Jansen           allocate (ientp(neltp,nshl))
45*9d714148SKenneth E. Jansenc           read(igeom) ientp
46*9d714148SKenneth E. Jansen           iientpsiz=neltp*nshl
47*9d714148SKenneth E. Jansen           call readdatablock(igeom,fname1,ientp,iientpsiz,
48*9d714148SKenneth E. Jansen     &                     "integer", iotype)
49*9d714148SKenneth E. Jansen
50*9d714148SKenneth E. Jansen           do n=1,neltp,ibksz
51*9d714148SKenneth E. Jansen
52*9d714148SKenneth E. Jansen              nelblk=nelblk+1
53*9d714148SKenneth E. Jansen              npro= min(IBKSZ, neltp - n + 1)
54*9d714148SKenneth E. Jansenc
55*9d714148SKenneth E. Jansen              lcblk(1,nelblk)  = iel
56*9d714148SKenneth E. Jansenc              lcblk(2,nelblk)  = iopen ! available for later use
57*9d714148SKenneth E. Jansen              lcblk(3,nelblk)  = lcsyst
58*9d714148SKenneth E. Jansen              lcblk(4,nelblk)  = ipordl
59*9d714148SKenneth E. Jansen              lcblk(5,nelblk)  = nenl
60*9d714148SKenneth E. Jansen              lcblk(6,nelblk)  = nfacel
61*9d714148SKenneth E. Jansen              lcblk(7,nelblk)  = mattyp
62*9d714148SKenneth E. Jansen              lcblk(8,nelblk)  = ndofl
63*9d714148SKenneth E. Jansen              lcblk(9,nelblk)  = nsymdl
64*9d714148SKenneth E. Jansen              lcblk(10,nelblk) = nshl ! # of shape functions per elt
65*9d714148SKenneth E. Jansenc
66*9d714148SKenneth E. Jansenc.... allocate memory for stack arrays
67*9d714148SKenneth E. Jansenc
68*9d714148SKenneth E. Jansen              allocate (mmat(nelblk)%p(npro))
69*9d714148SKenneth E. Jansenc
70*9d714148SKenneth E. Jansen              allocate (mien(nelblk)%p(npro,nshl))
71*9d714148SKenneth E. Jansen              allocate (mxmudmi(nelblk)%p(npro,maxsh))
72*9d714148SKenneth E. Jansenc
73*9d714148SKenneth E. Jansenc.... save the element block
74*9d714148SKenneth E. Jansenc
75*9d714148SKenneth E. Jansen              n1=n
76*9d714148SKenneth E. Jansen              n2=n+npro-1
77*9d714148SKenneth E. Jansen              mater=1   ! all one material for now
78*9d714148SKenneth E. Jansen              call gensav (ientp(n1:n2,1:nshl),
79*9d714148SKenneth E. Jansen     &                     mater,           mien(nelblk)%p,
80*9d714148SKenneth E. Jansen     &                     mmat(nelblk)%p)
81*9d714148SKenneth E. Jansen              iel=iel+npro
82*9d714148SKenneth E. Jansenc
83*9d714148SKenneth E. Jansen           enddo
84*9d714148SKenneth E. Jansen           deallocate(ientp)
85*9d714148SKenneth E. Jansen        enddo
86*9d714148SKenneth E. Jansen        lcblk(1,nelblk+1) = iel
87*9d714148SKenneth E. Jansenc
88*9d714148SKenneth E. Jansenc.... return
89*9d714148SKenneth E. Jansenc
90*9d714148SKenneth E. JansenCAD        call timer ('Back    ')
91*9d714148SKenneth E. Jansenc
92*9d714148SKenneth E. Jansen        return
93*9d714148SKenneth E. Jansenc
94*9d714148SKenneth E. Jansen1000    format(a80,//,
95*9d714148SKenneth E. Jansen     &  ' N o d a l   C o n n e c t i v i t y',//,
96*9d714148SKenneth E. Jansen     &  '   Elem  ',/,
97*9d714148SKenneth E. Jansen     &  '  Number  ',7x,27('Node',i2,:,2x))
98*9d714148SKenneth E. Jansen1100    format(2x,i5,6x,27i8)
99*9d714148SKenneth E. Jansen        end
100