xref: /phasta/phSolver/common/genblkPosix.f (revision 0f541e5d26e66cb112f701a63cd9dac73e936f62)
1*0f541e5dSKenneth E. Jansen        subroutine genblkPosix (IBKSZ)
29d714148SKenneth E. Jansenc
39d714148SKenneth E. Jansenc----------------------------------------------------------------------
49d714148SKenneth E. Jansenc
59d714148SKenneth E. Jansenc  This routine reads the interior elements and generates the
69d714148SKenneth E. Jansenc  appropriate blocks.
79d714148SKenneth E. Jansenc
89d714148SKenneth E. Jansenc Zdenek Johan, Fall 1991.
99d714148SKenneth E. Jansenc----------------------------------------------------------------------
109d714148SKenneth E. Jansenc
119d714148SKenneth E. Jansen        use pointer_data
12*0f541e5dSKenneth E. Jansen        use phio
13*0f541e5dSKenneth E. Jansen        use iso_c_binding
149d714148SKenneth E. Jansen        include "common.h"
15*0f541e5dSKenneth E. Jansen        include "mpif.h" !Required to determine the max for itpblk
16*0f541e5dSKenneth E. Jansen
17*0f541e5dSKenneth E. Jansen        integer, target, allocatable :: ientp(:,:)
189d714148SKenneth E. Jansen        integer mater(ibksz)
19*0f541e5dSKenneth E. Jansen        integer, target :: intfromfile(50) ! integers read from headers
209d714148SKenneth E. Jansen        character*255 fname1
21*0f541e5dSKenneth E. Jansen        integer :: descriptor, descriptorG, GPID, color
22*0f541e5dSKenneth E. Jansen        integer ::  numparts, writeLock
23*0f541e5dSKenneth E. Jansen        integer :: ierr_io, numprocs
24*0f541e5dSKenneth E. Jansen        integer, target :: itpblktot,ierr,iseven
25*0f541e5dSKenneth E. Jansen        character*255 fname2
26*0f541e5dSKenneth E. Jansen        character(len=30) :: dataInt
27*0f541e5dSKenneth E. Jansen        dataInt = c_char_'integer'//c_null_char
28*0f541e5dSKenneth E. Jansen        numparts = numpe !This is the common settings. Beware if you try to compute several parts per process
29*0f541e5dSKenneth E. Jansen        ione=1
30*0f541e5dSKenneth E. Jansen        itwo=2
31*0f541e5dSKenneth E. Jansen        iseven=7
32*0f541e5dSKenneth E. Jansen        ieleven=11
339d714148SKenneth E. Jansen        iel=1
349d714148SKenneth E. Jansen        itpblk=nelblk
359d714148SKenneth E. Jansen
369d714148SKenneth E. Jansen        nelblk=0
379d714148SKenneth E. Jansen        mattyp = 0
389d714148SKenneth E. Jansen        ndofl = ndof
399d714148SKenneth E. Jansen        nsymdl = nsymdf
409d714148SKenneth E. Jansen        do iblk = 1, itpblk
41*0f541e5dSKenneth E. Jansen        write (fname2,"('connectivity interior?')")
42*0f541e5dSKenneth E. Jansen           call phio_readheader(fhandle, fname2 // char(0),
43*0f541e5dSKenneth E. Jansen     &      c_loc(intfromfile), iseven, dataInt, iotype)
449d714148SKenneth E. Jansen           neltp  =intfromfile(1)
459d714148SKenneth E. Jansen           nenl   =intfromfile(2)
469d714148SKenneth E. Jansen           ipordl =intfromfile(3)
479d714148SKenneth E. Jansen           nshl   =intfromfile(4)
489d714148SKenneth E. Jansen           ijunk  =intfromfile(5)
499d714148SKenneth E. Jansen           ijunk  =intfromfile(6)
509d714148SKenneth E. Jansen           lcsyst =intfromfile(7)
519d714148SKenneth E. Jansen           allocate (ientp(neltp,nshl))
529d714148SKenneth E. Jansen           iientpsiz=neltp*nshl
53*0f541e5dSKenneth E. Jansen           call phio_readdatablock(fhandle,fname2 // char(0),
54*0f541e5dSKenneth E. Jansen     &      c_loc(ientp), iientpsiz, dataInt, iotype)
559d714148SKenneth E. Jansen
569d714148SKenneth E. Jansen           do n=1,neltp,ibksz
579d714148SKenneth E. Jansen
589d714148SKenneth E. Jansen              nelblk=nelblk+1
599d714148SKenneth E. Jansen              npro= min(IBKSZ, neltp - n + 1)
609d714148SKenneth E. Jansenc
619d714148SKenneth E. Jansen              lcblk(1,nelblk)  = iel
629d714148SKenneth E. Jansenc              lcblk(2,nelblk)  = iopen ! available for later use
639d714148SKenneth E. Jansen              lcblk(3,nelblk)  = lcsyst
649d714148SKenneth E. Jansen              lcblk(4,nelblk)  = ipordl
659d714148SKenneth E. Jansen              lcblk(5,nelblk)  = nenl
669d714148SKenneth E. Jansen              lcblk(6,nelblk)  = nfacel
679d714148SKenneth E. Jansen              lcblk(7,nelblk)  = mattyp
689d714148SKenneth E. Jansen              lcblk(8,nelblk)  = ndofl
699d714148SKenneth E. Jansen              lcblk(9,nelblk)  = nsymdl
709d714148SKenneth E. Jansen              lcblk(10,nelblk) = nshl ! # of shape functions per elt
719d714148SKenneth E. Jansenc
729d714148SKenneth E. Jansenc.... allocate memory for stack arrays
739d714148SKenneth E. Jansenc
749d714148SKenneth E. Jansen              allocate (mmat(nelblk)%p(npro))
759d714148SKenneth E. Jansenc
769d714148SKenneth E. Jansen                allocate (mien(nelblk)%p(npro,nshl))
779d714148SKenneth E. Jansen                allocate (mxmudmi(nelblk)%p(npro,maxsh))
78*0f541e5dSKenneth E. Jansen                if(usingpetsc.eq.0) then
79*0f541e5dSKenneth E. Jansen                    allocate (mienG(nelblk)%p(1,1))
80*0f541e5dSKenneth E. Jansen                else
81*0f541e5dSKenneth E. Jansen                    allocate (mienG(nelblk)%p(npro,nshl))
82*0f541e5dSKenneth E. Jansen                endif
83*0f541e5dSKenneth E. Jansen                ! note mienG will be passed to gensav but nothing filled if not
84*0f541e5dSKenneth E. Jansen                ! using PETSc so this is safe
859d714148SKenneth E. Jansenc
869d714148SKenneth E. Jansenc.... save the element block
879d714148SKenneth E. Jansenc
889d714148SKenneth E. Jansen                n1=n
899d714148SKenneth E. Jansen                n2=n+npro-1
909d714148SKenneth E. Jansen                mater=1   ! all one material for now
919d714148SKenneth E. Jansen                call gensav (ientp(n1:n2,1:nshl),
929d714148SKenneth E. Jansen     &                       mater,           mien(nelblk)%p,
93*0f541e5dSKenneth E. Jansen     &                       mienG(nelblk)%p,
949d714148SKenneth E. Jansen     &                       mmat(nelblk)%p)
959d714148SKenneth E. Jansen                iel=iel+npro
969d714148SKenneth E. Jansen             enddo
979d714148SKenneth E. Jansen           deallocate(ientp)
989d714148SKenneth E. Jansen        enddo
999d714148SKenneth E. Jansen        lcblk(1,nelblk+1) = iel
1009d714148SKenneth E. Jansenc
1019d714148SKenneth E. Jansenc.... return
1029d714148SKenneth E. Jansenc
103*0f541e5dSKenneth E. Jansen
1049d714148SKenneth E. Jansen        return
1059d714148SKenneth E. Jansenc
1069d714148SKenneth E. Jansen1000    format(a80,//,
1079d714148SKenneth E. Jansen     &  ' N o d a l   C o n n e c t i v i t y',//,
1089d714148SKenneth E. Jansen     &  '   Elem  ',/,
1099d714148SKenneth E. Jansen     &  '  Number  ',7x,27('Node',i2,:,2x))
1109d714148SKenneth E. Jansen1100    format(2x,i5,6x,27i8)
1119d714148SKenneth E. Jansen        end
112