xref: /phasta/phSolver/common/genbkb.f (revision e5afe575c31e8c8ddf3ee8a1daadc21a50758f4b)
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
13*e5afe575SCameron Smith        use phio
14*e5afe575SCameron 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
2259599516SKenneth E. Jansen        integer, allocatable :: ientp(:,:),iBCBtp(:,:)
2359599516SKenneth E. Jansen        real*8, allocatable :: BCBtp(:,:)
2459599516SKenneth E. Jansen        integer materb(ibksz)
2559599516SKenneth E. Jansen        integer 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
3159599516SKenneth E. Jansen        integer :: numparts, nppf, 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
3559599516SKenneth E. Jansen        integer :: itpblktot,ierr
3659599516SKenneth E. Jansen!MR CHANGE END
3759599516SKenneth E. Jansen
3859599516SKenneth E. Jansen        character*255 fnamer, fname2, temp2
3959599516SKenneth E. Jansen        character*64 temp1, temp3
4059599516SKenneth E. Jansen
41*e5afe575SCameron Smith        type(c_ptr) :: handle
42*e5afe575SCameron Smith        character(len=30) :: dataInt
43*e5afe575SCameron Smith        dataInt = c_char_'integer'//c_null_char
44*e5afe575SCameron Smith
4559599516SKenneth E. Jansen        nfiles = nsynciofiles
4659599516SKenneth E. Jansen        nfields = nsynciofieldsreadgeombc
4759599516SKenneth E. Jansen        numparts = numpe !This is the common settings. Beware if you try to compute several parts per process
4859599516SKenneth E. Jansen
4959599516SKenneth E. Jansen        nppp = numparts/numpe
5059599516SKenneth E. Jansen        nppf = numparts/nfiles
5159599516SKenneth E. Jansen
5259599516SKenneth E. Jansen        color = int(myrank/(numparts/nfiles))
5359599516SKenneth E. Jansen        itmp2 = int(log10(float(color+1)))+1
5459599516SKenneth E. Jansen        write (temp2,"('(''geombc-dat.'',i',i1,')')") itmp2
5559599516SKenneth E. Jansen        temp2=trim(temp2)
5659599516SKenneth E. Jansen        write (fnamer,temp2) (color+1)
5759599516SKenneth E. Jansen        fnamer=trim(fnamer)
5859599516SKenneth E. Jansen
5959599516SKenneth E. Jansen        ione=1
6059599516SKenneth E. Jansen        itwo=2
6159599516SKenneth E. Jansen        ieight=8
6259599516SKenneth E. Jansen        ieleven=11
6359599516SKenneth E. Jansen        itmp = int(log10(float(myrank+1)))+1
6459599516SKenneth E. Jansen
6559599516SKenneth E. Jansen!        num_global_loop = 4
6659599516SKenneth E. Jansen!        num_local_loop = nelblb
6759599516SKenneth E. Jansen
6859599516SKenneth E. Jansencccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
6959599516SKenneth E. Jansen
7059599516SKenneth E. Jansen        iel=1
7159599516SKenneth E. Jansen        itpblk=nelblb
7259599516SKenneth E. Jansen
7359599516SKenneth E. Jansen
7459599516SKenneth E. Jansen!MR CHANGE
7559599516SKenneth E. Jansen        ! Get the total number of different interior topologies in the whole domain.
7659599516SKenneth E. Jansen        ! Try to read from a field. If the field does not exist, scan the geombc file.
7759599516SKenneth E. Jansen        itpblktot=-1
78*e5afe575SCameron Smith        call phio_readheader(handle,
79*e5afe575SCameron Smith     &   c_char_'total number of boundary tpblocks' // char(0),
80*e5afe575SCameron Smith     &   c_loc(itpblktot), ione, dataInt, iotype)
8159599516SKenneth E. Jansen
8259599516SKenneth E. Jansen!        write (*,*) 'Rank: ',myrank,' boundary itpblktot intermediate:',
8359599516SKenneth E. Jansen!     &               itpblktot
8459599516SKenneth E. Jansen
8559599516SKenneth E. Jansen        if (itpblktot == -1) then
8659599516SKenneth E. Jansen          ! The field 'total number of different boundary tpblocks' was not found in the geombc file.
8759599516SKenneth E. Jansen          ! Scan all the geombc file for the 'connectivity interior' fields to get this information.
8859599516SKenneth E. Jansen          iblk=0
8959599516SKenneth E. Jansen          neltp=0
9059599516SKenneth E. Jansen          do while(neltp .ne. -1)
9159599516SKenneth E. Jansen
9259599516SKenneth E. Jansen            ! intfromfile is reinitialized to -1 every time.
9359599516SKenneth E. Jansen            ! If connectivity boundary@xxx is not found, then
9459599516SKenneth E. Jansen            ! readheader will return intfromfile unchanged
9559599516SKenneth E. Jansen
9659599516SKenneth E. Jansen            intfromfile(:)=-1
9759599516SKenneth E. Jansen            iblk = iblk+1
98*e5afe575SCameron Smith            call phio_readheader(handle,
99*e5afe575SCameron Smith     &       c_char_'connectivity boundary1' // char(0),
100*e5afe575SCameron Smith     &       c_loc(intfromfile), ieight, dataInt, iotype)
10159599516SKenneth E. Jansen            neltp = intfromfile(1) ! -1 if fname2 was not found, >=0 otherwise
10259599516SKenneth E. Jansen          end do
10359599516SKenneth E. Jansen          itpblktot = iblk-1
10459599516SKenneth E. Jansen        end if
10559599516SKenneth E. Jansen
10659599516SKenneth E. Jansen        if (myrank == 0) then
10759599516SKenneth E. Jansen          write(*,*) 'Number of boundary topologies: ',itpblktot
10859599516SKenneth E. Jansen        endif
10959599516SKenneth E. Jansen!        write (*,*) 'Rank: ',myrank,' boundary itpblktot final:',
11059599516SKenneth E. Jansen!     &               itpblktot
11159599516SKenneth E. Jansen
11259599516SKenneth E. Jansen!MR CHANGE END
11359599516SKenneth E. Jansen        nelblb=0
11459599516SKenneth E. Jansen        mattyp=0
11559599516SKenneth E. Jansen        ndofl = ndof
11659599516SKenneth E. Jansen!MR CHANGE
11759599516SKenneth E. Jansen!        call initphmpiio( nfields, nppf, nfiles, igeom )
11859599516SKenneth E. Jansen!        call openfile( fnamer, 'read', igeom )
11959599516SKenneth E. Jansen
12059599516SKenneth E. Jansen        do iblk = 1, itpblktot
12159599516SKenneth E. Jansen           writeLock=0;
12259599516SKenneth E. Jansen!MR CHANGE END
12359599516SKenneth E. Jansen
12459599516SKenneth E. Jansen
12559599516SKenneth E. Jansen!           print *, "Loop ",iblk, myrank, itpblk, trim(fnamer)
12659599516SKenneth E. Jansen
12759599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
12859599516SKenneth E. Jansen!           write(*,*) 'rank, fname2',myrank, trim(adjustl(fname2))
12959599516SKenneth E. Jansen
13059599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
13159599516SKenneth E. Jansen
13259599516SKenneth E. Jansen           ! Synchronization for performance monitoring, as some parts do not include some topologies
13359599516SKenneth E. Jansen           call MPI_Barrier(MPI_COMM_WORLD,ierr)
134*e5afe575SCameron Smith           call phio_readheader(handle,
135*e5afe575SCameron Smith     &      c_char_'connectivity boundary1' // char(0),
136*e5afe575SCameron Smith     &      c_loc(intfromfile), ieight, dataInt, iotype)
13759599516SKenneth E. Jansen           neltp =intfromfile(1)
13859599516SKenneth E. Jansen           nenl  =intfromfile(2)
13959599516SKenneth E. Jansen           ipordl=intfromfile(3)
14059599516SKenneth E. Jansen           nshl  =intfromfile(4)
14159599516SKenneth E. Jansen           nshlb =intfromfile(5)
14259599516SKenneth E. Jansen           nenbl =intfromfile(6)
14359599516SKenneth E. Jansen           lcsyst=intfromfile(7)
14459599516SKenneth E. Jansen           numnbc=intfromfile(8)
14559599516SKenneth E. Jansen
14659599516SKenneth E. Jansen!MR CHANGE
14759599516SKenneth E. Jansen!           write (temp1,"('connectivityBoundaryHeader_',i1,'_',i1)")
14859599516SKenneth E. Jansen!     &                                              iblk,myrank
14959599516SKenneth E. Jansen!           temp1=trim(temp1)
15059599516SKenneth E. Jansen!           open(unit=14,file=temp1,status='unknown')
15159599516SKenneth E. Jansen!           write(14,*) intfromfile(:)
15259599516SKenneth E. Jansen!           close(14)
15359599516SKenneth E. Jansen!MR CHANGE END
15459599516SKenneth E. Jansen
15559599516SKenneth E. Jansen           allocate (ientp(neltp,nshl))
15659599516SKenneth E. Jansen           allocate (iBCBtp(neltp,ndiBCB))
15759599516SKenneth E. Jansen           allocate (BCBtp(neltp,ndBCB))
15859599516SKenneth E. Jansen           iientpsiz=neltp*nshl
15959599516SKenneth E. Jansen
16059599516SKenneth E. Jansen           if (neltp==0) then
16159599516SKenneth E. Jansen              writeLock=1;
16259599516SKenneth E. Jansen           endif
16359599516SKenneth E. Jansen
16459599516SKenneth E. Jansen!           print *, "neltp is ", neltp
16559599516SKenneth E. Jansen
166f262839cSCameron Smith           call phio_readdatablock(igeom,'connectivity boundary1' // char(0),
167ba1c73e0SCameron Smith     &      ientp,iientpsiz,'integer' // char(0),iotype)
16859599516SKenneth E. Jansen
16959599516SKenneth E. Jansen!MR CHANGE
17059599516SKenneth E. Jansen!           write (temp1,"('connectivityBoundaryDatablock_',i1,'_',i1)")
17159599516SKenneth E. Jansen!     &                                              iblk,myrank
17259599516SKenneth E. Jansen!           temp1=trim(temp1)
17359599516SKenneth E. Jansen
17459599516SKenneth E. Jansen!           open(unit=14,file=temp1,status='unknown')
17559599516SKenneth E. Jansen!           do i=1,neltp
17659599516SKenneth E. Jansen!              do j=1,nshl
17759599516SKenneth E. Jansen!                write(14,*) ientp(i,j)
17859599516SKenneth E. Jansen!              enddo
17959599516SKenneth E. Jansen!           enddo
18059599516SKenneth E. Jansen!           write(14,*) iientpsiz
18159599516SKenneth E. Jansen!           close(14)
18259599516SKenneth E. Jansen!MR CHANGE END
18359599516SKenneth E. Jansen
18459599516SKenneth E. Jansen
18559599516SKenneth E. Jansenc
18659599516SKenneth E. Jansenc.... Read the boundary flux codes
18759599516SKenneth E. Jansenc
18859599516SKenneth E. Jansen
18959599516SKenneth E. Jansen!           print *,"connectivity [] is ", trim(fname2),ientp(0,0)
19059599516SKenneth E. Jansen
19159599516SKenneth E. Jansen
19259599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
19359599516SKenneth E. Jansen           call MPI_BARRIER(MPI_COMM_WORLD, ierr)
19459599516SKenneth E. Jansen
19559599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
19659599516SKenneth E. Jansen
197*e5afe575SCameron Smith           call phio_readheader(handle,
198*e5afe575SCameron Smith     &      c_char_'nbc codes1' // char(0),
199*e5afe575SCameron Smith     &      c_loc(intfromfile), ieight, dataInt, iotype)
20059599516SKenneth E. Jansen           iiBCBtpsiz=neltp*ndiBCB
201f262839cSCameron Smith           call phio_readdatablock(igeom,'nbc codes1' // char(0) ,iBCBtp,
20259599516SKenneth E. Jansen     &      iiBCBtpsiz,'integer' // char(0),iotype)
20359599516SKenneth E. Jansen
20459599516SKenneth E. Jansen!MR CHANGE
20559599516SKenneth E. Jansen!           print *, "ndiBCB is ",ndiBCB
20659599516SKenneth E. Jansen!           write (temp1,"('nbcCodesDatablock_',i1,'_',i1)")
20759599516SKenneth E. Jansen!     &                                              iblk,myrank
20859599516SKenneth E. Jansen!           temp1=trim(temp1)
20959599516SKenneth E. Jansen!
21059599516SKenneth E. Jansen!           open(unit=13,file=temp1,status='unknown')
21159599516SKenneth E. Jansen!           do i=1,neltp
21259599516SKenneth E. Jansen!              do j=1,ndiBCB
21359599516SKenneth E. Jansen!                write(13,*) iBCBtp(i,j)
21459599516SKenneth E. Jansen!              enddo
21559599516SKenneth E. Jansen!           enddo
21659599516SKenneth E. Jansen!           write(13,*) iiBCBtpsiz
21759599516SKenneth E. Jansen!           close(13)
21859599516SKenneth E. Jansen!!           iBCBtp(:,:) = 0 ! JUST FOR TEST
21959599516SKenneth E. Jansen!MR CHANGE END
22059599516SKenneth E. Jansen
22159599516SKenneth E. Jansenc
22259599516SKenneth E. Jansenc.... read the boundary condition data
22359599516SKenneth E. Jansenc
22459599516SKenneth E. Jansen
22559599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
22659599516SKenneth E. Jansen           call MPI_BARRIER(MPI_COMM_WORLD, ierr)
22759599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
22859599516SKenneth E. Jansen
229*e5afe575SCameron Smith           call phio_readheader(handle,
230*e5afe575SCameron Smith     &      c_char_'nbc values1' // char(0),
231*e5afe575SCameron Smith     &      c_loc(intfromfile), ieight, dataInt, iotype)
23259599516SKenneth E. Jansen           BCBtp    = zero
23359599516SKenneth E. Jansen           iBCBtpsiz=neltp*ndBCB
234f262839cSCameron Smith           call phio_readdatablock(igeom,'nbc values1' // char(0),
235ba1c73e0SCameron Smith     &      BCBtp,iBCBtpsiz,'double' // char(0) ,iotype)
23659599516SKenneth E. Jansen
23759599516SKenneth E. Jansen!MR CHANGE
23859599516SKenneth E. Jansen!           write (temp1,"('nbcValuesDatablock_',i1,'_',i1)")
23959599516SKenneth E. Jansen!     &                                              iblk,myrank
24059599516SKenneth E. Jansen!           temp1=trim(temp1)
24159599516SKenneth E. Jansen!           open(unit=12,file=temp1,status='unknown')
24259599516SKenneth E. Jansen!           do i=1,neltp
24359599516SKenneth E. Jansen!              do j=1,ndBCB
24459599516SKenneth E. Jansen!                write(12,*) BCBtp(i,j)
24559599516SKenneth E. Jansen!              enddo
24659599516SKenneth E. Jansen!           enddo
24759599516SKenneth E. Jansen!           write(12,*) iBCBtpsiz
24859599516SKenneth E. Jansen!           close(12)
24959599516SKenneth E. Jansen!MR CHANGE END
25059599516SKenneth E. Jansen
25159599516SKenneth E. Jansenc
25259599516SKenneth E. Jansenc This is a temporary fix until NSpre properly zeros this array where it
25359599516SKenneth E. Jansenc is not set.  DEC has indigestion with these arrays though the
25459599516SKenneth E. Jansenc result is never used (never effects solution).
25559599516SKenneth E. Jansenc
25659599516SKenneth E. Jansen
25759599516SKenneth E. Jansen
25859599516SKenneth E. Jansen!MR CHANGE
25959599516SKenneth E. Jansen           if(writeLock==0) then
26059599516SKenneth E. Jansen!MR CHANGE
26159599516SKenneth E. Jansen!              print *,"In ASSIGN ASSIGN",myrank
26259599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),0)) BCBtp(:,1)=zero
26359599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),1)) BCBtp(:,2)=zero
26459599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),3)) BCBtp(:,6)=zero
26559599516SKenneth E. Jansen              if(ndBCB.gt.6) then
26659599516SKenneth E. Jansen                 do i=6,ndof
26759599516SKenneth E. Jansen                    where(.not.btest(iBCBtp(:,1),i-1)) BCBtp(:,i+1)=zero
26859599516SKenneth E. Jansen                 enddo
26959599516SKenneth E. Jansen              endif
27059599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),2))
27159599516SKenneth E. Jansen                 BCBtp(:,3)=zero
27259599516SKenneth E. Jansen                 BCBtp(:,4)=zero
27359599516SKenneth E. Jansen                 BCBtp(:,5)=zero
27459599516SKenneth E. Jansen              endwhere
27559599516SKenneth E. Jansen
27659599516SKenneth E. Jansen              do n=1,neltp,ibksz
27759599516SKenneth E. Jansen                 nelblb=nelblb+1
27859599516SKenneth E. Jansen                 npro= min(IBKSZ, neltp - n + 1)
27959599516SKenneth E. Jansenc
28059599516SKenneth E. Jansen                 lcblkb(1,nelblb)  = iel
28159599516SKenneth E. Jansenc     lcblkb(2,nelblb)  = iopen ! available for later use
28259599516SKenneth E. Jansen                 lcblkb(3,nelblb)  = lcsyst
28359599516SKenneth E. Jansen                 lcblkb(4,nelblb)  = ipordl
28459599516SKenneth E. Jansen                 lcblkb(5,nelblb)  = nenl
28559599516SKenneth E. Jansen                 lcblkb(6,nelblb)  = nenbl
28659599516SKenneth E. Jansen                 lcblkb(7,nelblb)  = mattyp
28759599516SKenneth E. Jansen                 lcblkb(8,nelblb)  = ndofl
28859599516SKenneth E. Jansen                 lcblkb(9,nelblb)  = nshl
28959599516SKenneth E. Jansen                 lcblkb(10,nelblb) = nshlb ! # of shape functions per elt
29059599516SKenneth E. Jansenc
29159599516SKenneth E. Jansenc.... save the element block
29259599516SKenneth E. Jansenc
29359599516SKenneth E. Jansen                 n1=n
29459599516SKenneth E. Jansen                 n2=n+npro-1
29559599516SKenneth E. Jansen                 materb=1       ! all one material for now
29659599516SKenneth E. Jansenc
29759599516SKenneth E. Jansenc.... allocate memory for stack arrays
29859599516SKenneth E. Jansenc
29959599516SKenneth E. Jansen
30059599516SKenneth E. Jansen                 allocate (mienb(nelblb)%p(npro,nshl))
30159599516SKenneth E. Jansenc
30259599516SKenneth E. Jansen                 allocate (miBCB(nelblb)%p(npro,ndiBCB))
30359599516SKenneth E. Jansenc
30459599516SKenneth E. Jansen                 allocate (mBCB(nelblb)%p(npro,nshlb,ndBCB))
30559599516SKenneth E. Jansenc
30659599516SKenneth E. Jansen                 allocate (mmatb(nelblb)%p(npro))
30759599516SKenneth E. Jansenc
30859599516SKenneth E. Jansenc.... save the boundary element block
30959599516SKenneth E. Jansenc
31059599516SKenneth E. Jansen                 call gensvb (ientp(n1:n2,1:nshl),
31159599516SKenneth E. Jansen     &                iBCBtp(n1:n2,:),      BCBtp(n1:n2,:),
31259599516SKenneth E. Jansen     &                materb,        mienb(nelblb)%p,
31359599516SKenneth E. Jansen     &                miBCB(nelblb)%p,        mBCB(nelblb)%p,
31459599516SKenneth E. Jansen     &                mmatb(nelblb)%p)
31559599516SKenneth E. Jansenc
31659599516SKenneth E. Jansen                 iel=iel+npro
31759599516SKenneth E. Jansen              enddo
31859599516SKenneth E. Jansen
31959599516SKenneth E. Jansen!MR CHANGE
32059599516SKenneth E. Jansen           endif
32159599516SKenneth E. Jansen!MR CHANGE
32259599516SKenneth E. Jansen           deallocate(ientp)
32359599516SKenneth E. Jansen           deallocate(iBCBtp)
32459599516SKenneth E. Jansen           deallocate(BCBtp)
32559599516SKenneth E. Jansen
32659599516SKenneth E. Jansen        enddo
32759599516SKenneth E. Jansen        lcblkb(1,nelblb+1) = iel
32859599516SKenneth E. Jansen
32959599516SKenneth E. Jansen!        call closefile( igeom, "read" )
33059599516SKenneth E. Jansen!        call finalizephmpiio( igeom )
33159599516SKenneth E. Jansen
33259599516SKenneth E. Jansenc
33359599516SKenneth E. Jansenc.... return
33459599516SKenneth E. Jansenc
33559599516SKenneth E. Jansen        return
33659599516SKenneth E. Jansenc
33759599516SKenneth E. Jansenc.... end of file error handling
33859599516SKenneth E. Jansenc
33959599516SKenneth E. Jansen 911    call error ('genbcb  ','end file',igeomBAK)
34059599516SKenneth E. Jansenc
34159599516SKenneth E. Jansen1000    format(a80,//,
34259599516SKenneth 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',//,
34359599516SKenneth E. Jansen     &  '   Elem   BC codes',/,
34459599516SKenneth E. Jansen     &  '  Number  C P V H ',5x,27('Node',i1,:,2x))
34559599516SKenneth E. Jansen1100    format(2x,i5,2x,4i2,3x,27i7)
34659599516SKenneth E. Jansenc$$$2000    format(a80,//,
34759599516SKenneth E. Jansenc$$$     &  ' B o u n d a r y   E l e m e n t   B C   D a t a ',//,
34859599516SKenneth E. Jansenc$$$     &  '   Node   ',3x,'mass',/,
34959599516SKenneth E. Jansenc$$$     &  '  Number  ',3x,'flux',6x,'Pressure',6x,'Heat',6x,
35059599516SKenneth E. Jansenc$$$     &  3('Viscous',i1,:,4x))
35159599516SKenneth E. Jansen2100    format(2x,i5,1p,1x,6e12.4)
35259599516SKenneth E. Jansenc
35359599516SKenneth E. Jansen        end
35459599516SKenneth E. Jansen
355