34 character*70 :: file_mpi, mpi_file, file_mpi_new
36 integer*4 :: nnz_dg, np
37 integer*4 :: i, j, unit_mpi, nnz_mpi, tot_el, mpi_np, ishift
39 integer*4,
dimension(:),
allocatable :: cs_mpi
40 integer*4,
dimension(0:nnz_dg),
intent(inout) :: cs_dg
46 file_mpi =
'DGCS000000.mpi'
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
63 if(len_trim(mpi_file) .ne. 70)
then
64 file_mpi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // file_mpi
66 file_mpi_new = file_mpi
69 open(unit_mpi,file=file_mpi_new)
71 read(unit_mpi,*) nnz_mpi
72 allocate(cs_mpi(0:nnz_mpi))
74 read(unit_mpi,*) cs_mpi(j)
78 do j = 1, cs_mpi(0) - 1
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)
84 ishift = ishift + cs_mpi(0)-1
subroutine make_spx_con_dg(cs_dg, nnz_dg, tot_el, np, mpi_file)
Makes connectivity vector for DG elements.