159599516SKenneth E. Jansen subroutine genbkb (ibksz) 259599516SKenneth E. Jansenc 359599516SKenneth E. Jansenc---------------------------------------------------------------------- 459599516SKenneth E. Jansenc 559599516SKenneth E. Jansenc This routine reads the boundary elements, reorders them and 659599516SKenneth E. Jansenc generates traces for the gather/scatter operations. 759599516SKenneth E. Jansenc 859599516SKenneth E. Jansenc Zdenek Johan, Fall 1991. 959599516SKenneth E. Jansenc---------------------------------------------------------------------- 1059599516SKenneth E. Jansenc 1159599516SKenneth E. Jansen use dtnmod 1259599516SKenneth E. Jansen use pointer_data 13e5afe575SCameron Smith use phio 14e5afe575SCameron Smith use iso_c_binding 1559599516SKenneth E. Jansenc 1659599516SKenneth E. Jansen include "common.h" 1759599516SKenneth E. Jansen!MR CHANGE 1859599516SKenneth E. Jansen include "mpif.h" !Required to determine the max for itpblk 1959599516SKenneth E. Jansen!MR CHANGE END 2059599516SKenneth E. Jansenc 2159599516SKenneth E. Jansen 229a6935e5SKenneth E. Jansen integer, target, allocatable :: ientp(:,:),iBCBtp(:,:) 239a6935e5SKenneth E. Jansen real*8, target, allocatable :: BCBtp(:,:) 2459599516SKenneth E. Jansen integer materb(ibksz) 259a6935e5SKenneth E. Jansen integer, target :: intfromfile(50) ! integers read from headers 2659599516SKenneth E. Jansen character*255 fname1 2759599516SKenneth E. Jansen 2859599516SKenneth E. Jansencccccccccccccc New Phasta IO starts here cccccccccccccccccccccccccccccc 2959599516SKenneth E. Jansen 3059599516SKenneth E. Jansen integer :: descriptor, descriptorG, GPID, color, nfiles, nfields 31*2efdc748SKenneth E. Jansen integer :: numparts, nppp, nprocs, writeLock 3259599516SKenneth E. Jansen integer :: ierr_io, numprocs, itmp, itmp2 3359599516SKenneth E. Jansen! integer :: num_local_loop, num_global_loop 3459599516SKenneth E. Jansen!MR CHANGE 359a6935e5SKenneth E. Jansen integer, target :: itpblktot,ierr 3659599516SKenneth E. Jansen!MR CHANGE END 3759599516SKenneth E. Jansen 38*2efdc748SKenneth E. Jansen character*255 fname2 3959599516SKenneth E. Jansen 40bc62cfd4SCameron Smith character(len=30) :: dataInt, dataDbl 41e5afe575SCameron Smith dataInt = c_char_'integer'//c_null_char 42bc62cfd4SCameron Smith dataDbl = c_char_'double'//c_null_char 43e5afe575SCameron Smith 4459599516SKenneth E. Jansen nfiles = nsynciofiles 4559599516SKenneth E. Jansen nfields = nsynciofieldsreadgeombc 4659599516SKenneth E. Jansen numparts = numpe !This is the common settings. Beware if you try to compute several parts per process 4759599516SKenneth E. Jansen 4859599516SKenneth E. Jansen nppp = numparts/numpe 4959599516SKenneth E. Jansen 5059599516SKenneth E. Jansen 5159599516SKenneth E. Jansen ione=1 5259599516SKenneth E. Jansen itwo=2 5359599516SKenneth E. Jansen ieight=8 5459599516SKenneth E. Jansen ieleven=11 5559599516SKenneth E. Jansen itmp = int(log10(float(myrank+1)))+1 5659599516SKenneth E. Jansen 5759599516SKenneth E. Jansen! num_global_loop = 4 5859599516SKenneth E. Jansen! num_local_loop = nelblb 5959599516SKenneth E. Jansen 6059599516SKenneth E. Jansencccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 6159599516SKenneth E. Jansen 6259599516SKenneth E. Jansen iel=1 6359599516SKenneth E. Jansen itpblk=nelblb 6459599516SKenneth E. Jansen 6559599516SKenneth E. Jansen 6659599516SKenneth E. Jansen!MR CHANGE 6759599516SKenneth E. Jansen ! Get the total number of different interior topologies in the whole domain. 6859599516SKenneth E. Jansen ! Try to read from a field. If the field does not exist, scan the geombc file. 69*2efdc748SKenneth E. Jansen itpblktot=1 ! hardwired to monotopology for now 70d5d2f64dSCameron Smith call phio_readheader(fhandle, 71e5afe575SCameron Smith & c_char_'total number of boundary tpblocks' // char(0), 72e5afe575SCameron Smith & c_loc(itpblktot), ione, dataInt, iotype) 7359599516SKenneth E. Jansen 7459599516SKenneth E. Jansen! write (*,*) 'Rank: ',myrank,' boundary itpblktot intermediate:', 7559599516SKenneth E. Jansen! & itpblktot 7659599516SKenneth E. Jansen 7759599516SKenneth E. Jansen if (itpblktot == -1) then 7859599516SKenneth E. Jansen ! The field 'total number of different boundary tpblocks' was not found in the geombc file. 7959599516SKenneth E. Jansen ! Scan all the geombc file for the 'connectivity interior' fields to get this information. 8059599516SKenneth E. Jansen iblk=0 8159599516SKenneth E. Jansen neltp=0 8259599516SKenneth E. Jansen do while(neltp .ne. -1) 8359599516SKenneth E. Jansen 8459599516SKenneth E. Jansen ! intfromfile is reinitialized to -1 every time. 8559599516SKenneth E. Jansen ! If connectivity boundary@xxx is not found, then 8659599516SKenneth E. Jansen ! readheader will return intfromfile unchanged 8759599516SKenneth E. Jansen 8859599516SKenneth E. Jansen intfromfile(:)=-1 8959599516SKenneth E. Jansen iblk = iblk+1 90*2efdc748SKenneth E. Jansen if(nfiles.gt.0)then 91*2efdc748SKenneth E. Jansen write (fname2,"('connectivity boundary',i1)") iblk 92*2efdc748SKenneth E. Jansen else 93*2efdc748SKenneth E. Jansen write (fname2,"('connectivity boundary linear tetrahedron')") 94*2efdc748SKenneth E. Jansen endif 95*2efdc748SKenneth E. Jansen 96*2efdc748SKenneth E. Jansen call phio_readheader(fhandle, fname2 // char(0), 97e5afe575SCameron Smith & c_loc(intfromfile), ieight, dataInt, iotype) 9859599516SKenneth E. Jansen neltp = intfromfile(1) ! -1 if fname2 was not found, >=0 otherwise 9959599516SKenneth E. Jansen end do 10059599516SKenneth E. Jansen itpblktot = iblk-1 10159599516SKenneth E. Jansen end if 10259599516SKenneth E. Jansen 10359599516SKenneth E. Jansen if (myrank == 0) then 10459599516SKenneth E. Jansen write(*,*) 'Number of boundary topologies: ',itpblktot 10559599516SKenneth E. Jansen endif 10659599516SKenneth E. Jansen! write (*,*) 'Rank: ',myrank,' boundary itpblktot final:', 10759599516SKenneth E. Jansen! & itpblktot 10859599516SKenneth E. Jansen 10959599516SKenneth E. Jansen!MR CHANGE END 11059599516SKenneth E. Jansen nelblb=0 11159599516SKenneth E. Jansen mattyp=0 11259599516SKenneth E. Jansen ndofl = ndof 11359599516SKenneth E. Jansen!MR CHANGE 11459599516SKenneth E. Jansen! call initphmpiio( nfields, nppf, nfiles, igeom ) 11559599516SKenneth E. Jansen! call openfile( fnamer, 'read', igeom ) 11659599516SKenneth E. Jansen 11759599516SKenneth E. Jansen do iblk = 1, itpblktot 11859599516SKenneth E. Jansen writeLock=0; 11959599516SKenneth E. Jansen!MR CHANGE END 12059599516SKenneth E. Jansen 12159599516SKenneth E. Jansen 12259599516SKenneth E. Jansen! print *, "Loop ",iblk, myrank, itpblk, trim(fnamer) 12359599516SKenneth E. Jansen 12459599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 12559599516SKenneth E. Jansen! write(*,*) 'rank, fname2',myrank, trim(adjustl(fname2)) 12659599516SKenneth E. Jansen 12759599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 12859599516SKenneth E. Jansen 129*2efdc748SKenneth E. Jansen if(nfiles.gt.0)then 130*2efdc748SKenneth E. Jansen write (fname2,"('connectivity boundary',i1)") iblk 131*2efdc748SKenneth E. Jansen else 132*2efdc748SKenneth E. Jansen write (fname2,"('connectivity boundary linear tetrahedron')") 133*2efdc748SKenneth E. Jansen endif 134*2efdc748SKenneth E. Jansen 13559599516SKenneth E. Jansen ! Synchronization for performance monitoring, as some parts do not include some topologies 13659599516SKenneth E. Jansen call MPI_Barrier(MPI_COMM_WORLD,ierr) 137*2efdc748SKenneth E. Jansen call phio_readheader(fhandle, fname2 // char(0), 138e5afe575SCameron Smith & c_loc(intfromfile), ieight, dataInt, iotype) 13959599516SKenneth E. Jansen neltp =intfromfile(1) 14059599516SKenneth E. Jansen nenl =intfromfile(2) 14159599516SKenneth E. Jansen ipordl=intfromfile(3) 14259599516SKenneth E. Jansen nshl =intfromfile(4) 14359599516SKenneth E. Jansen nshlb =intfromfile(5) 14459599516SKenneth E. Jansen nenbl =intfromfile(6) 14559599516SKenneth E. Jansen lcsyst=intfromfile(7) 14659599516SKenneth E. Jansen numnbc=intfromfile(8) 14759599516SKenneth E. Jansen 14859599516SKenneth E. Jansen!MR CHANGE 14959599516SKenneth E. Jansen! write (temp1,"('connectivityBoundaryHeader_',i1,'_',i1)") 15059599516SKenneth E. Jansen! & iblk,myrank 15159599516SKenneth E. Jansen! temp1=trim(temp1) 15259599516SKenneth E. Jansen! open(unit=14,file=temp1,status='unknown') 15359599516SKenneth E. Jansen! write(14,*) intfromfile(:) 15459599516SKenneth E. Jansen! close(14) 15559599516SKenneth E. Jansen!MR CHANGE END 15659599516SKenneth E. Jansen 15759599516SKenneth E. Jansen allocate (ientp(neltp,nshl)) 15859599516SKenneth E. Jansen allocate (iBCBtp(neltp,ndiBCB)) 15959599516SKenneth E. Jansen allocate (BCBtp(neltp,ndBCB)) 16059599516SKenneth E. Jansen iientpsiz=neltp*nshl 16159599516SKenneth E. Jansen 16259599516SKenneth E. Jansen if (neltp==0) then 16359599516SKenneth E. Jansen writeLock=1; 16459599516SKenneth E. Jansen endif 16559599516SKenneth E. Jansen 16659599516SKenneth E. Jansen! print *, "neltp is ", neltp 16759599516SKenneth E. Jansen 168*2efdc748SKenneth E. Jansen call phio_readdatablock(fhandle, fname2 // char(0), 169bc62cfd4SCameron Smith & c_loc(ientp),iientpsiz,dataInt,iotype) 17059599516SKenneth E. Jansen 17159599516SKenneth E. Jansen!MR CHANGE 17259599516SKenneth E. Jansen! write (temp1,"('connectivityBoundaryDatablock_',i1,'_',i1)") 17359599516SKenneth E. Jansen! & iblk,myrank 17459599516SKenneth E. Jansen! temp1=trim(temp1) 17559599516SKenneth E. Jansen 17659599516SKenneth E. Jansen! open(unit=14,file=temp1,status='unknown') 17759599516SKenneth E. Jansen! do i=1,neltp 17859599516SKenneth E. Jansen! do j=1,nshl 17959599516SKenneth E. Jansen! write(14,*) ientp(i,j) 18059599516SKenneth E. Jansen! enddo 18159599516SKenneth E. Jansen! enddo 18259599516SKenneth E. Jansen! write(14,*) iientpsiz 18359599516SKenneth E. Jansen! close(14) 18459599516SKenneth E. Jansen!MR CHANGE END 18559599516SKenneth E. Jansen 18659599516SKenneth E. Jansen 18759599516SKenneth E. Jansenc 18859599516SKenneth E. Jansenc.... Read the boundary flux codes 18959599516SKenneth E. Jansenc 19059599516SKenneth E. Jansen 19159599516SKenneth E. Jansen! print *,"connectivity [] is ", trim(fname2),ientp(0,0) 19259599516SKenneth E. Jansen 19359599516SKenneth E. Jansen 19459599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 19559599516SKenneth E. Jansen call MPI_BARRIER(MPI_COMM_WORLD, ierr) 19659599516SKenneth E. Jansen 19759599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 198*2efdc748SKenneth E. Jansen if(nfiles.gt.0)then 199*2efdc748SKenneth E. Jansen write (fname2,"('nbc codes',i1)") iblk 200*2efdc748SKenneth E. Jansen else 201*2efdc748SKenneth E. Jansen write (fname2,"('nbc codes linear tetrahedron')") 202*2efdc748SKenneth E. Jansen endif 20359599516SKenneth E. Jansen 204*2efdc748SKenneth E. Jansen call phio_readheader(fhandle, fname2 // char(0), 205e5afe575SCameron Smith & c_loc(intfromfile), ieight, dataInt, iotype) 20659599516SKenneth E. Jansen iiBCBtpsiz=neltp*ndiBCB 207*2efdc748SKenneth E. Jansen call phio_readdatablock(fhandle, fname2 // char(0), 208bc62cfd4SCameron Smith & c_loc(iBCBtp),iiBCBtpsiz,dataInt,iotype) 20959599516SKenneth E. Jansen 21059599516SKenneth E. Jansen!MR CHANGE 21159599516SKenneth E. Jansen! print *, "ndiBCB is ",ndiBCB 21259599516SKenneth E. Jansen! write (temp1,"('nbcCodesDatablock_',i1,'_',i1)") 21359599516SKenneth E. Jansen! & iblk,myrank 21459599516SKenneth E. Jansen! temp1=trim(temp1) 21559599516SKenneth E. Jansen! 21659599516SKenneth E. Jansen! open(unit=13,file=temp1,status='unknown') 21759599516SKenneth E. Jansen! do i=1,neltp 21859599516SKenneth E. Jansen! do j=1,ndiBCB 21959599516SKenneth E. Jansen! write(13,*) iBCBtp(i,j) 22059599516SKenneth E. Jansen! enddo 22159599516SKenneth E. Jansen! enddo 22259599516SKenneth E. Jansen! write(13,*) iiBCBtpsiz 22359599516SKenneth E. Jansen! close(13) 22459599516SKenneth E. Jansen!! iBCBtp(:,:) = 0 ! JUST FOR TEST 22559599516SKenneth E. Jansen!MR CHANGE END 22659599516SKenneth E. Jansen 22759599516SKenneth E. Jansenc 22859599516SKenneth E. Jansenc.... read the boundary condition data 22959599516SKenneth E. Jansenc 23059599516SKenneth E. Jansen 23159599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 23259599516SKenneth E. Jansen call MPI_BARRIER(MPI_COMM_WORLD, ierr) 23359599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 234*2efdc748SKenneth E. Jansen if(nfiles.gt.0)then 235*2efdc748SKenneth E. Jansen write (fname2,"('nbc values',i1)") iblk 236*2efdc748SKenneth E. Jansen else 237*2efdc748SKenneth E. Jansen write (fname2,"('nbc values linear tetrahedron')") 238*2efdc748SKenneth E. Jansen endif 23959599516SKenneth E. Jansen 240*2efdc748SKenneth E. Jansen call phio_readheader(fhandle, fname2 // char(0), 241e5afe575SCameron Smith & c_loc(intfromfile), ieight, dataInt, iotype) 24259599516SKenneth E. Jansen BCBtp = zero 24359599516SKenneth E. Jansen iBCBtpsiz=neltp*ndBCB 244*2efdc748SKenneth E. Jansen call phio_readdatablock(fhandle, fname2 // char(0), 245bc62cfd4SCameron Smith & c_loc(BCBtp),iBCBtpsiz,dataDbl,iotype) 24659599516SKenneth E. Jansen 24759599516SKenneth E. Jansen!MR CHANGE 24859599516SKenneth E. Jansen! write (temp1,"('nbcValuesDatablock_',i1,'_',i1)") 24959599516SKenneth E. Jansen! & iblk,myrank 25059599516SKenneth E. Jansen! temp1=trim(temp1) 25159599516SKenneth E. Jansen! open(unit=12,file=temp1,status='unknown') 25259599516SKenneth E. Jansen! do i=1,neltp 25359599516SKenneth E. Jansen! do j=1,ndBCB 25459599516SKenneth E. Jansen! write(12,*) BCBtp(i,j) 25559599516SKenneth E. Jansen! enddo 25659599516SKenneth E. Jansen! enddo 25759599516SKenneth E. Jansen! write(12,*) iBCBtpsiz 25859599516SKenneth E. Jansen! close(12) 25959599516SKenneth E. Jansen!MR CHANGE END 26059599516SKenneth E. Jansen 26159599516SKenneth E. Jansenc 26259599516SKenneth E. Jansenc This is a temporary fix until NSpre properly zeros this array where it 26359599516SKenneth E. Jansenc is not set. DEC has indigestion with these arrays though the 26459599516SKenneth E. Jansenc result is never used (never effects solution). 26559599516SKenneth E. Jansenc 26659599516SKenneth E. Jansen 26759599516SKenneth E. Jansen 26859599516SKenneth E. Jansen!MR CHANGE 26959599516SKenneth E. Jansen if(writeLock==0) then 27059599516SKenneth E. Jansen!MR CHANGE 27159599516SKenneth E. Jansen! print *,"In ASSIGN ASSIGN",myrank 27259599516SKenneth E. Jansen where(.not.btest(iBCBtp(:,1),0)) BCBtp(:,1)=zero 27359599516SKenneth E. Jansen where(.not.btest(iBCBtp(:,1),1)) BCBtp(:,2)=zero 27459599516SKenneth E. Jansen where(.not.btest(iBCBtp(:,1),3)) BCBtp(:,6)=zero 27559599516SKenneth E. Jansen if(ndBCB.gt.6) then 27659599516SKenneth E. Jansen do i=6,ndof 27759599516SKenneth E. Jansen where(.not.btest(iBCBtp(:,1),i-1)) BCBtp(:,i+1)=zero 27859599516SKenneth E. Jansen enddo 27959599516SKenneth E. Jansen endif 28059599516SKenneth E. Jansen where(.not.btest(iBCBtp(:,1),2)) 28159599516SKenneth E. Jansen BCBtp(:,3)=zero 28259599516SKenneth E. Jansen BCBtp(:,4)=zero 28359599516SKenneth E. Jansen BCBtp(:,5)=zero 28459599516SKenneth E. Jansen endwhere 28559599516SKenneth E. Jansen 28659599516SKenneth E. Jansen do n=1,neltp,ibksz 28759599516SKenneth E. Jansen nelblb=nelblb+1 28859599516SKenneth E. Jansen npro= min(IBKSZ, neltp - n + 1) 28959599516SKenneth E. Jansenc 29059599516SKenneth E. Jansen lcblkb(1,nelblb) = iel 29159599516SKenneth E. Jansenc lcblkb(2,nelblb) = iopen ! available for later use 29259599516SKenneth E. Jansen lcblkb(3,nelblb) = lcsyst 29359599516SKenneth E. Jansen lcblkb(4,nelblb) = ipordl 29459599516SKenneth E. Jansen lcblkb(5,nelblb) = nenl 29559599516SKenneth E. Jansen lcblkb(6,nelblb) = nenbl 29659599516SKenneth E. Jansen lcblkb(7,nelblb) = mattyp 29759599516SKenneth E. Jansen lcblkb(8,nelblb) = ndofl 29859599516SKenneth E. Jansen lcblkb(9,nelblb) = nshl 29959599516SKenneth E. Jansen lcblkb(10,nelblb) = nshlb ! # of shape functions per elt 30059599516SKenneth E. Jansenc 30159599516SKenneth E. Jansenc.... save the element block 30259599516SKenneth E. Jansenc 30359599516SKenneth E. Jansen n1=n 30459599516SKenneth E. Jansen n2=n+npro-1 30559599516SKenneth E. Jansen materb=1 ! all one material for now 30659599516SKenneth E. Jansenc 30759599516SKenneth E. Jansenc.... allocate memory for stack arrays 30859599516SKenneth E. Jansenc 30959599516SKenneth E. Jansen 31059599516SKenneth E. Jansen allocate (mienb(nelblb)%p(npro,nshl)) 31159599516SKenneth E. Jansenc 31259599516SKenneth E. Jansen allocate (miBCB(nelblb)%p(npro,ndiBCB)) 31359599516SKenneth E. Jansenc 31459599516SKenneth E. Jansen allocate (mBCB(nelblb)%p(npro,nshlb,ndBCB)) 31559599516SKenneth E. Jansenc 31659599516SKenneth E. Jansen allocate (mmatb(nelblb)%p(npro)) 31759599516SKenneth E. Jansenc 31859599516SKenneth E. Jansenc.... save the boundary element block 31959599516SKenneth E. Jansenc 32059599516SKenneth E. Jansen call gensvb (ientp(n1:n2,1:nshl), 32159599516SKenneth E. Jansen & iBCBtp(n1:n2,:), BCBtp(n1:n2,:), 32259599516SKenneth E. Jansen & materb, mienb(nelblb)%p, 32359599516SKenneth E. Jansen & miBCB(nelblb)%p, mBCB(nelblb)%p, 32459599516SKenneth E. Jansen & mmatb(nelblb)%p) 32559599516SKenneth E. Jansenc 32659599516SKenneth E. Jansen iel=iel+npro 32759599516SKenneth E. Jansen enddo 32859599516SKenneth E. Jansen 32959599516SKenneth E. Jansen!MR CHANGE 33059599516SKenneth E. Jansen endif 33159599516SKenneth E. Jansen!MR CHANGE 33259599516SKenneth E. Jansen deallocate(ientp) 33359599516SKenneth E. Jansen deallocate(iBCBtp) 33459599516SKenneth E. Jansen deallocate(BCBtp) 33559599516SKenneth E. Jansen 33659599516SKenneth E. Jansen enddo 33759599516SKenneth E. Jansen lcblkb(1,nelblb+1) = iel 33859599516SKenneth E. Jansen 33959599516SKenneth E. Jansen! call closefile( igeom, "read" ) 34059599516SKenneth E. Jansen! call finalizephmpiio( igeom ) 34159599516SKenneth E. Jansen 34259599516SKenneth E. Jansenc 34359599516SKenneth E. Jansenc.... return 34459599516SKenneth E. Jansenc 34559599516SKenneth E. Jansen return 34659599516SKenneth E. Jansenc 34759599516SKenneth E. Jansenc.... end of file error handling 34859599516SKenneth E. Jansenc 34959599516SKenneth E. Jansen 911 call error ('genbcb ','end file',igeomBAK) 35059599516SKenneth E. Jansenc 35159599516SKenneth E. Jansen1000 format(a80,//, 35259599516SKenneth E. Jansen & ' B o u n d a r y E l e m e n t C o n n e c t i v i t y',//, 35359599516SKenneth E. Jansen & ' Elem BC codes',/, 35459599516SKenneth E. Jansen & ' Number C P V H ',5x,27('Node',i1,:,2x)) 35559599516SKenneth E. Jansen1100 format(2x,i5,2x,4i2,3x,27i7) 35659599516SKenneth E. Jansenc$$$2000 format(a80,//, 35759599516SKenneth E. Jansenc$$$ & ' B o u n d a r y E l e m e n t B C D a t a ',//, 35859599516SKenneth E. Jansenc$$$ & ' Node ',3x,'mass',/, 35959599516SKenneth E. Jansenc$$$ & ' Number ',3x,'flux',6x,'Pressure',6x,'Heat',6x, 36059599516SKenneth E. Jansenc$$$ & 3('Viscous',i1,:,4x)) 36159599516SKenneth E. Jansen2100 format(2x,i5,1p,1x,6e12.4) 36259599516SKenneth E. Jansenc 36359599516SKenneth E. Jansen end 36459599516SKenneth E. Jansen 365