xref: /phasta/phSolver/common/genbkb.f (revision 9a6935e58d1bec7fbe804a813bfa0382dfd762c1)
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
22*9a6935e5SKenneth E. Jansen        integer, target, allocatable :: ientp(:,:),iBCBtp(:,:)
23*9a6935e5SKenneth E. Jansen        real*8, target, allocatable :: BCBtp(:,:)
2459599516SKenneth E. Jansen        integer materb(ibksz)
25*9a6935e5SKenneth 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
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
35*9a6935e5SKenneth E. Jansen        integer, target :: 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
41bc62cfd4SCameron Smith        character(len=30) :: dataInt, dataDbl
42e5afe575SCameron Smith        dataInt = c_char_'integer'//c_null_char
43bc62cfd4SCameron Smith        dataDbl = c_char_'double'//c_null_char
44e5afe575SCameron 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
78d5d2f64dSCameron Smith        call phio_readheader(fhandle,
79e5afe575SCameron Smith     &   c_char_'total number of boundary tpblocks' // char(0),
80e5afe575SCameron 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
98d5d2f64dSCameron Smith            call phio_readheader(fhandle,
99e5afe575SCameron Smith     &       c_char_'connectivity boundary1' // char(0),
100e5afe575SCameron 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)
134d5d2f64dSCameron Smith           call phio_readheader(fhandle,
135e5afe575SCameron Smith     &      c_char_'connectivity boundary1' // char(0),
136e5afe575SCameron 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
166d5d2f64dSCameron Smith           call phio_readdatablock(fhandle,
167bc62cfd4SCameron Smith     &      c_char_'connectivity boundary1' // char(0),
168bc62cfd4SCameron Smith     &      c_loc(ientp),iientpsiz,dataInt,iotype)
16959599516SKenneth E. Jansen
17059599516SKenneth E. Jansen!MR CHANGE
17159599516SKenneth E. Jansen!           write (temp1,"('connectivityBoundaryDatablock_',i1,'_',i1)")
17259599516SKenneth E. Jansen!     &                                              iblk,myrank
17359599516SKenneth E. Jansen!           temp1=trim(temp1)
17459599516SKenneth E. Jansen
17559599516SKenneth E. Jansen!           open(unit=14,file=temp1,status='unknown')
17659599516SKenneth E. Jansen!           do i=1,neltp
17759599516SKenneth E. Jansen!              do j=1,nshl
17859599516SKenneth E. Jansen!                write(14,*) ientp(i,j)
17959599516SKenneth E. Jansen!              enddo
18059599516SKenneth E. Jansen!           enddo
18159599516SKenneth E. Jansen!           write(14,*) iientpsiz
18259599516SKenneth E. Jansen!           close(14)
18359599516SKenneth E. Jansen!MR CHANGE END
18459599516SKenneth E. Jansen
18559599516SKenneth E. Jansen
18659599516SKenneth E. Jansenc
18759599516SKenneth E. Jansenc.... Read the boundary flux codes
18859599516SKenneth E. Jansenc
18959599516SKenneth E. Jansen
19059599516SKenneth E. Jansen!           print *,"connectivity [] is ", trim(fname2),ientp(0,0)
19159599516SKenneth E. Jansen
19259599516SKenneth E. Jansen
19359599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
19459599516SKenneth E. Jansen           call MPI_BARRIER(MPI_COMM_WORLD, ierr)
19559599516SKenneth E. Jansen
19659599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
19759599516SKenneth E. Jansen
198d5d2f64dSCameron Smith           call phio_readheader(fhandle,
199e5afe575SCameron Smith     &      c_char_'nbc codes1' // char(0),
200e5afe575SCameron Smith     &      c_loc(intfromfile), ieight, dataInt, iotype)
20159599516SKenneth E. Jansen           iiBCBtpsiz=neltp*ndiBCB
202d5d2f64dSCameron Smith           call phio_readdatablock(fhandle,
203bc62cfd4SCameron Smith     &      c_char_'nbc codes1' // char(0),
204bc62cfd4SCameron Smith     &      c_loc(iBCBtp),iiBCBtpsiz,dataInt,iotype)
20559599516SKenneth E. Jansen
20659599516SKenneth E. Jansen!MR CHANGE
20759599516SKenneth E. Jansen!           print *, "ndiBCB is ",ndiBCB
20859599516SKenneth E. Jansen!           write (temp1,"('nbcCodesDatablock_',i1,'_',i1)")
20959599516SKenneth E. Jansen!     &                                              iblk,myrank
21059599516SKenneth E. Jansen!           temp1=trim(temp1)
21159599516SKenneth E. Jansen!
21259599516SKenneth E. Jansen!           open(unit=13,file=temp1,status='unknown')
21359599516SKenneth E. Jansen!           do i=1,neltp
21459599516SKenneth E. Jansen!              do j=1,ndiBCB
21559599516SKenneth E. Jansen!                write(13,*) iBCBtp(i,j)
21659599516SKenneth E. Jansen!              enddo
21759599516SKenneth E. Jansen!           enddo
21859599516SKenneth E. Jansen!           write(13,*) iiBCBtpsiz
21959599516SKenneth E. Jansen!           close(13)
22059599516SKenneth E. Jansen!!           iBCBtp(:,:) = 0 ! JUST FOR TEST
22159599516SKenneth E. Jansen!MR CHANGE END
22259599516SKenneth E. Jansen
22359599516SKenneth E. Jansenc
22459599516SKenneth E. Jansenc.... read the boundary condition data
22559599516SKenneth E. Jansenc
22659599516SKenneth E. Jansen
22759599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
22859599516SKenneth E. Jansen           call MPI_BARRIER(MPI_COMM_WORLD, ierr)
22959599516SKenneth E. Jansenccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
23059599516SKenneth E. Jansen
231d5d2f64dSCameron Smith           call phio_readheader(fhandle,
232e5afe575SCameron Smith     &      c_char_'nbc values1' // char(0),
233e5afe575SCameron Smith     &      c_loc(intfromfile), ieight, dataInt, iotype)
23459599516SKenneth E. Jansen           BCBtp    = zero
23559599516SKenneth E. Jansen           iBCBtpsiz=neltp*ndBCB
236d5d2f64dSCameron Smith           call phio_readdatablock(fhandle,
237bc62cfd4SCameron Smith     &      c_char_'nbc values1' // char(0),
238bc62cfd4SCameron Smith     &      c_loc(BCBtp),iBCBtpsiz,dataDbl,iotype)
23959599516SKenneth E. Jansen
24059599516SKenneth E. Jansen!MR CHANGE
24159599516SKenneth E. Jansen!           write (temp1,"('nbcValuesDatablock_',i1,'_',i1)")
24259599516SKenneth E. Jansen!     &                                              iblk,myrank
24359599516SKenneth E. Jansen!           temp1=trim(temp1)
24459599516SKenneth E. Jansen!           open(unit=12,file=temp1,status='unknown')
24559599516SKenneth E. Jansen!           do i=1,neltp
24659599516SKenneth E. Jansen!              do j=1,ndBCB
24759599516SKenneth E. Jansen!                write(12,*) BCBtp(i,j)
24859599516SKenneth E. Jansen!              enddo
24959599516SKenneth E. Jansen!           enddo
25059599516SKenneth E. Jansen!           write(12,*) iBCBtpsiz
25159599516SKenneth E. Jansen!           close(12)
25259599516SKenneth E. Jansen!MR CHANGE END
25359599516SKenneth E. Jansen
25459599516SKenneth E. Jansenc
25559599516SKenneth E. Jansenc This is a temporary fix until NSpre properly zeros this array where it
25659599516SKenneth E. Jansenc is not set.  DEC has indigestion with these arrays though the
25759599516SKenneth E. Jansenc result is never used (never effects solution).
25859599516SKenneth E. Jansenc
25959599516SKenneth E. Jansen
26059599516SKenneth E. Jansen
26159599516SKenneth E. Jansen!MR CHANGE
26259599516SKenneth E. Jansen           if(writeLock==0) then
26359599516SKenneth E. Jansen!MR CHANGE
26459599516SKenneth E. Jansen!              print *,"In ASSIGN ASSIGN",myrank
26559599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),0)) BCBtp(:,1)=zero
26659599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),1)) BCBtp(:,2)=zero
26759599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),3)) BCBtp(:,6)=zero
26859599516SKenneth E. Jansen              if(ndBCB.gt.6) then
26959599516SKenneth E. Jansen                 do i=6,ndof
27059599516SKenneth E. Jansen                    where(.not.btest(iBCBtp(:,1),i-1)) BCBtp(:,i+1)=zero
27159599516SKenneth E. Jansen                 enddo
27259599516SKenneth E. Jansen              endif
27359599516SKenneth E. Jansen              where(.not.btest(iBCBtp(:,1),2))
27459599516SKenneth E. Jansen                 BCBtp(:,3)=zero
27559599516SKenneth E. Jansen                 BCBtp(:,4)=zero
27659599516SKenneth E. Jansen                 BCBtp(:,5)=zero
27759599516SKenneth E. Jansen              endwhere
27859599516SKenneth E. Jansen
27959599516SKenneth E. Jansen              do n=1,neltp,ibksz
28059599516SKenneth E. Jansen                 nelblb=nelblb+1
28159599516SKenneth E. Jansen                 npro= min(IBKSZ, neltp - n + 1)
28259599516SKenneth E. Jansenc
28359599516SKenneth E. Jansen                 lcblkb(1,nelblb)  = iel
28459599516SKenneth E. Jansenc     lcblkb(2,nelblb)  = iopen ! available for later use
28559599516SKenneth E. Jansen                 lcblkb(3,nelblb)  = lcsyst
28659599516SKenneth E. Jansen                 lcblkb(4,nelblb)  = ipordl
28759599516SKenneth E. Jansen                 lcblkb(5,nelblb)  = nenl
28859599516SKenneth E. Jansen                 lcblkb(6,nelblb)  = nenbl
28959599516SKenneth E. Jansen                 lcblkb(7,nelblb)  = mattyp
29059599516SKenneth E. Jansen                 lcblkb(8,nelblb)  = ndofl
29159599516SKenneth E. Jansen                 lcblkb(9,nelblb)  = nshl
29259599516SKenneth E. Jansen                 lcblkb(10,nelblb) = nshlb ! # of shape functions per elt
29359599516SKenneth E. Jansenc
29459599516SKenneth E. Jansenc.... save the element block
29559599516SKenneth E. Jansenc
29659599516SKenneth E. Jansen                 n1=n
29759599516SKenneth E. Jansen                 n2=n+npro-1
29859599516SKenneth E. Jansen                 materb=1       ! all one material for now
29959599516SKenneth E. Jansenc
30059599516SKenneth E. Jansenc.... allocate memory for stack arrays
30159599516SKenneth E. Jansenc
30259599516SKenneth E. Jansen
30359599516SKenneth E. Jansen                 allocate (mienb(nelblb)%p(npro,nshl))
30459599516SKenneth E. Jansenc
30559599516SKenneth E. Jansen                 allocate (miBCB(nelblb)%p(npro,ndiBCB))
30659599516SKenneth E. Jansenc
30759599516SKenneth E. Jansen                 allocate (mBCB(nelblb)%p(npro,nshlb,ndBCB))
30859599516SKenneth E. Jansenc
30959599516SKenneth E. Jansen                 allocate (mmatb(nelblb)%p(npro))
31059599516SKenneth E. Jansenc
31159599516SKenneth E. Jansenc.... save the boundary element block
31259599516SKenneth E. Jansenc
31359599516SKenneth E. Jansen                 call gensvb (ientp(n1:n2,1:nshl),
31459599516SKenneth E. Jansen     &                iBCBtp(n1:n2,:),      BCBtp(n1:n2,:),
31559599516SKenneth E. Jansen     &                materb,        mienb(nelblb)%p,
31659599516SKenneth E. Jansen     &                miBCB(nelblb)%p,        mBCB(nelblb)%p,
31759599516SKenneth E. Jansen     &                mmatb(nelblb)%p)
31859599516SKenneth E. Jansenc
31959599516SKenneth E. Jansen                 iel=iel+npro
32059599516SKenneth E. Jansen              enddo
32159599516SKenneth E. Jansen
32259599516SKenneth E. Jansen!MR CHANGE
32359599516SKenneth E. Jansen           endif
32459599516SKenneth E. Jansen!MR CHANGE
32559599516SKenneth E. Jansen           deallocate(ientp)
32659599516SKenneth E. Jansen           deallocate(iBCBtp)
32759599516SKenneth E. Jansen           deallocate(BCBtp)
32859599516SKenneth E. Jansen
32959599516SKenneth E. Jansen        enddo
33059599516SKenneth E. Jansen        lcblkb(1,nelblb+1) = iel
33159599516SKenneth E. Jansen
33259599516SKenneth E. Jansen!        call closefile( igeom, "read" )
33359599516SKenneth E. Jansen!        call finalizephmpiio( igeom )
33459599516SKenneth E. Jansen
33559599516SKenneth E. Jansenc
33659599516SKenneth E. Jansenc.... return
33759599516SKenneth E. Jansenc
33859599516SKenneth E. Jansen        return
33959599516SKenneth E. Jansenc
34059599516SKenneth E. Jansenc.... end of file error handling
34159599516SKenneth E. Jansenc
34259599516SKenneth E. Jansen 911    call error ('genbcb  ','end file',igeomBAK)
34359599516SKenneth E. Jansenc
34459599516SKenneth E. Jansen1000    format(a80,//,
34559599516SKenneth 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',//,
34659599516SKenneth E. Jansen     &  '   Elem   BC codes',/,
34759599516SKenneth E. Jansen     &  '  Number  C P V H ',5x,27('Node',i1,:,2x))
34859599516SKenneth E. Jansen1100    format(2x,i5,2x,4i2,3x,27i7)
34959599516SKenneth E. Jansenc$$$2000    format(a80,//,
35059599516SKenneth E. Jansenc$$$     &  ' B o u n d a r y   E l e m e n t   B C   D a t a ',//,
35159599516SKenneth E. Jansenc$$$     &  '   Node   ',3x,'mass',/,
35259599516SKenneth E. Jansenc$$$     &  '  Number  ',3x,'flux',6x,'Pressure',6x,'Heat',6x,
35359599516SKenneth E. Jansenc$$$     &  3('Viscous',i1,:,4x))
35459599516SKenneth E. Jansen2100    format(2x,i5,1p,1x,6e12.4)
35559599516SKenneth E. Jansenc
35659599516SKenneth E. Jansen        end
35759599516SKenneth E. Jansen
358