37 subroutine write_file_faces(mpi_file,filename, faces, nodes, n, ng, mpi_id, mpi_com, cfaces, np)
44 CHARACTER*70 :: filename, file_mpi, mpi_file, file_mpi_new
45 CHARACTER(LEN=1000) :: Format
48 INTEGER*4 :: mpierror, unit_mpi, dim2, jstart, unitname
50 INTEGER*4,
INTENT(IN) :: n, mpi_id, mpi_com, np, ng
51 INTEGER*4,
DIMENSION(np),
INTENT(INOUT) :: cfaces
53 INTEGER*4,
DIMENSION(3,n) :: faces
54 INTEGER*4,
DIMENSION(:,:),
ALLOCATABLE :: faces_glo
56 real*8,
DIMENSION(25,n) :: nodes
57 real*8,
DIMENSION(:,:),
ALLOCATABLE :: nodes_glo
61 file_mpi =
'FACS000000.mpi'
63 if (mpi_id .lt. 10)
then
64 write(file_mpi(10:10),
'(i1)') mpi_id
65 else if (mpi_id .lt. 100)
then
66 write(file_mpi(9:10),
'(i2)') mpi_id
67 else if (mpi_id .lt. 1000)
then
68 write(file_mpi(8:10),
'(i3)') mpi_id
69 else if (mpi_id .lt. 10000)
then
70 write(file_mpi(7:10),
'(i4)') mpi_id
71 else if (mpi_id .lt. 100000)
then
72 write(file_mpi(6:10),
'(i5)') mpi_id
73 else if (mpi_id .lt. 1000000)
then
74 write(file_mpi(5:10),
'(i6)') mpi_id
77 if(len_trim(mpi_file) .ne. 70)
then
78 file_mpi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // file_mpi
80 file_mpi_new = file_mpi
83 open(unit_mpi,file=file_mpi_new)
86 write(unit_mpi,
"(1I2,1X,1I12,1X,1I2,25(2X,ES16.9))") &
87 faces(1,i), faces(2,i), faces(3,i), &
88 nodes(1,i), nodes(2,i), nodes(3,i), &
89 nodes(4,i), nodes(5,i), nodes(6,i), &
90 nodes(7,i), nodes(8,i), nodes(9,i), &
91 nodes(10,i), nodes(11,i), nodes(12,i), &
92 nodes(13,i), nodes(14,i), nodes(15,i), &
93 nodes(16,i), nodes(17,i), nodes(18,i), &
94 nodes(19,i), nodes(20,i), nodes(21,i), &
95 nodes(22,i), nodes(23,i), nodes(24,i), &
103 call mpi_barrier(mpi_com, mpierror)
108 if(mpi_id .eq. 0)
then
110 allocate(faces_glo(3,ng), nodes_glo(25,ng))
114 if (cfaces(i) .ne. 0)
then
116 file_mpi =
'FACS000000.mpi'
118 if (i-1 .lt. 10)
then
119 write(file_mpi(10:10),
'(i1)') i-1
120 else if (i-1 .lt. 100)
then
121 write(file_mpi(9:10),
'(i2)') i-1
122 else if (i-1 .lt. 1000)
then
123 write(file_mpi(8:10),
'(i3)') i-1
124 else if (i-1 .lt. 10000)
then
125 write(file_mpi(7:10),
'(i4)') i-1
126 else if (i-1 .lt. 100000)
then
127 write(file_mpi(6:10),
'(i5)') i-1
128 else if (i-1 .lt. 1000000)
then
129 write(file_mpi(5:10),
'(i6)') i-1
132 if(len_trim(mpi_file) .ne. 70)
then
133 file_mpi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // file_mpi
135 file_mpi_new = file_mpi
138 open(unit_mpi,file=file_mpi_new)
139 read(unit_mpi,*) dim2
144 jstart = sum(cfaces(1:i-1))
150 faces_glo(1,j+jstart), faces_glo(2,j+jstart), faces_glo(3,j+jstart), &
151 nodes_glo(1,j+jstart), nodes_glo(2,j+jstart), nodes_glo(3,j+jstart), &
152 nodes_glo(4,j+jstart), nodes_glo(5,j+jstart), nodes_glo(6,j+jstart), &
153 nodes_glo(7,j+jstart), nodes_glo(8,j+jstart), nodes_glo(9,j+jstart), &
154 nodes_glo(10,j+jstart), nodes_glo(11,j+jstart), nodes_glo(12,j+jstart), &
155 nodes_glo(13,j+jstart), nodes_glo(14,j+jstart), nodes_glo(15,j+jstart), &
156 nodes_glo(16,j+jstart), nodes_glo(17,j+jstart), nodes_glo(18,j+jstart), &
157 nodes_glo(19,j+jstart), nodes_glo(20,j+jstart), nodes_glo(21,j+jstart), &
158 nodes_glo(22,j+jstart), nodes_glo(23,j+jstart), nodes_glo(24,j+jstart), &
159 nodes_glo(25,j+jstart)
173 open(unitname,file=filename)
177 write(unitname,
"(1I2,1X,1I12,1X,1I2,25(2X,ES16.9))") &
178 faces_glo(1,j), faces_glo(2,j), faces_glo(3,j), &
179 nodes_glo(1,j), nodes_glo(2,j), nodes_glo(3,j), &
180 nodes_glo(4,j), nodes_glo(5,j), nodes_glo(6,j), &
181 nodes_glo(7,j), nodes_glo(8,j), nodes_glo(9,j), &
182 nodes_glo(10,j), nodes_glo(11,j), nodes_glo(12,j), &
183 nodes_glo(13,j), nodes_glo(14,j), nodes_glo(15,j), &
184 nodes_glo(16,j), nodes_glo(17,j), nodes_glo(18,j), &
185 nodes_glo(19,j), nodes_glo(20,j), nodes_glo(21,j), &
186 nodes_glo(22,j), nodes_glo(23,j), nodes_glo(24,j), &
194 deallocate(faces_glo, nodes_glo)
200 call mpi_barrier(mpi_com, mpierror)