40 mpi_id, mpi_comm, mpi_np, cs_nnz_loc, cs_loc, &
41 ne_loc, local_el_num, &
42 local_n_num, nn_loc, total_cs_nnz_mpi, total_el, mpi_file)
52 type(
el4loop),
dimension(nel_dg_loc),
intent(in) :: el_new
54 character*70 :: file_mpi, mpi_file, file_mpi_new
55 character*70 :: filename
57 integer*4 :: nel_dg_loc, cs_nnz_loc, ne_loc, nel_dg_glo, mpi_id, mpi_comm, mpi_np, nn_loc
58 integer*4 :: mpierror, cs_nnz_mpi, nofel_mpi, el_dg
59 integer*4 :: i, j, k, ie, max_dime, dime_mpi, unit_mpi
60 integer*4,
intent(out) :: total_cs_nnz_mpi, total_el
62 integer*4,
dimension(:),
allocatable :: cs_mpi
63 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
64 integer*4,
dimension(ne_loc) :: local_el_num
65 integer*4,
dimension(nn_loc) :: local_n_num
72 cs_nnz_mpi = cs_nnz_mpi + el_new(i)%deg**3 + 1 + 1
73 nofel_mpi = nofel_mpi + 1
75 elseif(el_new(i)%ind .ne. el_new(i-1)%ind)
then
76 cs_nnz_mpi = cs_nnz_mpi + el_new(i)%deg**3 + 1 + 1
77 nofel_mpi = nofel_mpi + 1
81 allocate(cs_mpi(0:cs_nnz_mpi))
94 cs_mpi(k) = cs_mpi(k-1) + el_new(i)%deg**3 + 1
95 cs_mpi(cs_mpi(k-1)) = el_new(i)%ind
97 do j= 1, el_new(i)%deg**3
98 cs_mpi(cs_mpi(k-1) + j) = local_n_num(cs_loc(cs_loc(ie-1) + j))
101 elseif(el_new(i)%ind .ne. el_new(i-1)%ind)
then
106 cs_mpi(k) = cs_mpi(k-1) + el_new(i)%deg**3 + 1
107 cs_mpi(cs_mpi(k-1)) = el_new(i)%ind
109 do j= 1, el_new(i)%deg**3
110 cs_mpi(cs_mpi(k-1) + j) = local_n_num(cs_loc(cs_loc(ie-1) + j))
120 file_mpi =
'DGCS000000.mpi'
123 if (mpi_id .lt. 10)
then
124 write(file_mpi(10:10),
'(i1)') mpi_id
125 else if (mpi_id .lt. 100)
then
126 write(file_mpi(9:10),
'(i2)') mpi_id
127 else if (mpi_id .lt. 1000)
then
128 write(file_mpi(8:10),
'(i3)') mpi_id
129 else if (mpi_id .lt. 10000)
then
130 write(file_mpi(7:10),
'(i4)') mpi_id
131 else if (mpi_id .lt. 100000)
then
132 write(file_mpi(6:10),
'(i5)') mpi_id
133 else if (mpi_id .lt. 1000000)
then
134 write(file_mpi(5:10),
'(i6)') mpi_id
137 if(len_trim(mpi_file) .ne. 70)
then
138 file_mpi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // file_mpi
140 file_mpi_new = file_mpi
143 open(unit_mpi,file=file_mpi_new)
144 write(unit_mpi,*) cs_nnz_mpi
146 write(unit_mpi,*) cs_mpi(i)
153 call mpi_barrier(mpi_comm, mpierror)
159 file_mpi =
'DGCS000000.mpi'
162 if (i-1 .lt. 10)
then
163 write(file_mpi(10:10),
'(i1)') i-1
164 else if (i-1 .lt. 100)
then
165 write(file_mpi(9:10),
'(i2)') i-1
166 else if (i-1 .lt. 1000)
then
167 write(file_mpi(8:10),
'(i3)') i-1
168 else if (i-1 .lt. 10000)
then
169 write(file_mpi(7:10),
'(i4)') i-1
170 else if (i-1 .lt. 100000)
then
171 write(file_mpi(6:10),
'(i5)') i-1
172 else if (i-1 .lt. 1000000)
then
173 write(file_mpi(5:10),
'(i6)') i-1
176 if(len_trim(mpi_file) .ne. 70)
then
177 file_mpi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // file_mpi
179 file_mpi_new = file_mpi
182 open(unit_mpi,file=file_mpi_new)
183 read(unit_mpi,*) cs_nnz_mpi
184 read(unit_mpi,*) el_dg
186 total_cs_nnz_mpi = total_cs_nnz_mpi + cs_nnz_mpi
187 total_el = total_el + el_dg -1
192 total_el = total_el + 1
subroutine setup_dg4mpi(el_new, nel_dg_loc, nel_dg_glo, mpi_id, mpi_comm, mpi_np, cs_nnz_loc, cs_loc, ne_loc, local_el_num, local_n_num, nn_loc, total_cs_nnz_mpi, total_el, mpi_file)
Writes DGCSXXXXXX.mpi files for DG connectivity.