Makes connectivity vector for DG elements.
31
32 implicit none
33
34 character*70 :: file_mpi, mpi_file, file_mpi_new
35
36 integer*4 :: nnz_dg, np
37 integer*4 :: i, j, unit_mpi, nnz_mpi, tot_el, mpi_np, ishift
38
39 integer*4, dimension(:), allocatable :: cs_mpi
40 integer*4, dimension(0:nnz_dg), intent(inout) :: cs_dg
41
42 cs_dg(0) = tot_el
43 ishift = 0
44
45 do i = 1, np
46 file_mpi = 'DGCS000000.mpi'
47 unit_mpi = 40
48
49 if (i-1 .lt. 10) then
50 write(file_mpi(10:10),'(i1)') i-1
51 else if (i-1 .lt. 100) then
52 write(file_mpi(9:10),'(i2)') i-1
53 else if (i-1 .lt. 1000) then
54 write(file_mpi(8:10),'(i3)') i-1
55 else if (i-1 .lt. 10000) then
56 write(file_mpi(7:10),'(i4)') i-1
57 else if (i-1 .lt. 100000) then
58 write(file_mpi(6:10),'(i5)') i-1
59 else if (i-1 .lt. 1000000) then
60 write(file_mpi(5:10),'(i6)') i-1
61 endif
62
63 if(len_trim(mpi_file) .ne. 70) then
64 file_mpi_new = mpi_file(1:len_trim(mpi_file)) // '/' // file_mpi
65 else
66 file_mpi_new = file_mpi
67 endif
68
69 open(unit_mpi,file=file_mpi_new)
70
71 read(unit_mpi,*) nnz_mpi
72 allocate(cs_mpi(0:nnz_mpi))
73 do j = 0, nnz_mpi
74 read(unit_mpi,*) cs_mpi(j)
75 enddo
76 close(unit_mpi)
77
78 do j = 1, cs_mpi(0) - 1
79
80 cs_dg(ishift + j) = cs_dg(ishift + j-1) + (cs_mpi(j) - cs_mpi(j-1))
81 cs_dg(cs_dg(ishift + j-1) : cs_dg(ishift + j) - 1 ) = cs_mpi(cs_mpi(j-1) : cs_mpi(j) -1)
82
83 enddo
84 ishift = ishift + cs_mpi(0)-1
85 deallocate(cs_mpi)
86
87
88 enddo
89
90
91