xref: /phasta/phSolver/common/genbkb.f (revision 2efdc748c163fca218950001636e2694eb132b46)
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