16 & (fformat, nbor, knogl, ndp_bnd,
17 & nelebd, ninp, nplan, ikles, times, knolg, date,
18 & nelem_p, npoin_p, nptfr_p, ubor, hbor, chbord, tbor,
19 & vbor, btbor, atbor, liubor, lihbor, litbor, livbor,
20 & dataval, ikle_bnd, elelg, typ_elem, time, title, nvar,
21 & ntimestep, nptfr, npoin2, nparts, npoin, nout, ndp, f,
22 & variable, typ_bnd_elem, nptir_p, nameinp, namecli,
80 INTEGER,
ALLOCATABLE,
INTENT(INOUT) :: NBOR(:)
82 DOUBLE PRECISION,
ALLOCATABLE,
INTENT(IN) :: DATAVAL(:,:,:)
83 DOUBLE PRECISION,
ALLOCATABLE,
INTENT(IN) :: F(:,:)
85 CHARACTER(LEN=8),
INTENT(INOUT) :: FFORMAT
86 CHARACTER(LEN=80),
INTENT(IN) :: TITLE
87 CHARACTER(LEN=32),
ALLOCATABLE,
INTENT(IN) :: VARIABLE(:)
88 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMEINP, NAMECLI
89 INTEGER,
INTENT(IN) :: NDP_BND, NELEBD, NINP, NPLAN, TIME(3),
90 & typ_bnd_elem, date(3), typ_elem, nvar, ntimestep, nptfr,
91 & npoin2, nparts, npoin, ndp
92 INTEGER,
INTENT(INOUT) :: NOUT
93 INTEGER,
ALLOCATABLE,
INTENT(IN) :: IKLES(:), KNOLG(:,:),
94 & nelem_p(:), npoin_p(:), nptfr_p(:), liubor(:), lihbor(:),
95 & litbor(:), livbor(:), ikle_bnd(:), elelg(:,:), nptir_p(:),
97 DOUBLE PRECISION,
INTENT(INOUT) :: TIMES
98 DOUBLE PRECISION,
ALLOCATABLE,
INTENT(IN) :: HBOR(:),UBOR(:),
99 & vbor(:), chbord(:), tbor(:),atbor(:),btbor(:)
103 INTEGER :: I, J, K, L, M, IERR, ITIME, EF, IVAR, NELEBD_P
104 INTEGER :: IPTFR, IPTFR_P
105 INTEGER,
ALLOCATABLE :: IKLE_BND_P(:)
106 INTEGER,
ALLOCATABLE :: KNOLG_P(:), IKLE_P(:), IKLE3D_P(:)
107 DOUBLE PRECISION,
ALLOCATABLE :: HBOR_P(:),UBOR_P(:),VBOR_P(:)
108 DOUBLE PRECISION,
ALLOCATABLE :: TBOR_P(:),ATBOR_P(:)
109 DOUBLE PRECISION,
ALLOCATABLE :: BTBOR_P(:), DATAVAL_P(:)
110 DOUBLE PRECISION,
ALLOCATABLE :: CHBORD_P(:), X(:), Y(:)
111 INTEGER,
ALLOCATABLE :: LIVBOR_P(:),LITBOR_P(:),COLOR_P(:)
112 INTEGER,
ALLOCATABLE :: LIHBOR_P(:),LIUBOR_P(:),NBOR_P(:)
113 INTEGER,
ALLOCATABLE :: KNOGL_BND(:)
115 CHARACTER(LEN=PATH_LEN) :: NAMEOUT, NAMECLM
116 CHARACTER(LEN=11) :: EXTENS
121 WRITE(
lu,*)
'TREATING SUB-DOMAIN ', i
126 nameout = trim(nameinp)//
'-CONCAT' 127 nameclm = trim(namecli)//
'-CONCAT' 128 CALL open_mesh(fformat,nameout,nout,
'WRITE ',ierr, i)
130 nameout = trim(nameinp)//extens(nparts-1,i-1)
131 nameclm = trim(namecli)//extens(nparts-1,i-1)
132 CALL open_mesh(fformat,nameout,nout,
'WRITE ',ierr)
134 CALL check_call(ierr,
'PARTEL:OPEN_MESH:NOUT')
138 CALL set_header(fformat,nout,title,nvar,variable,ierr)
142 ALLOCATE(ikle_p(nelem_p(i)*3),stat=ierr)
143 CALL check_allocate(ierr,
'PARTEL:IKLE_P')
147 ikle_p(j+(k-1)*nelem_p(i)) =
152 ALLOCATE(ikle3d_p(nelem_p(i)*6*(nplan-1)),stat=ierr)
153 CALL check_allocate(ierr,
'PARTEL:IKLE_P')
156 ikle3d_p(j+(k-1)*nelem_p(i) + (0*nelem_p(i)*(nplan-1)))=
157 & ikle_p(j + (0*nelem_p(i))) + (k-1)*npoin_p(i)
158 ikle3d_p(j+(k-1)*nelem_p(i) + (1*nelem_p(i)*(nplan-1)))=
159 & ikle_p(j + (1*nelem_p(i))) + (k-1)*npoin_p(i)
160 ikle3d_p(j+(k-1)*nelem_p(i) + (2*nelem_p(i)*(nplan-1)))=
161 & ikle_p(j + (2*nelem_p(i))) + (k-1)*npoin_p(i)
162 ikle3d_p(j+(k-1)*nelem_p(i) + (3*nelem_p(i)*(nplan-1)))=
163 & ikle_p(j + (0*nelem_p(i))) + (k)*npoin_p(i)
164 ikle3d_p(j+(k-1)*nelem_p(i) + (4*nelem_p(i)*(nplan-1)))=
165 & ikle_p(j + (1*nelem_p(i))) + (k)*npoin_p(i)
166 ikle3d_p(j+(k-1)*nelem_p(i) + (5*nelem_p(i)*(nplan-1)))=
167 & ikle_p(j + (2*nelem_p(i))) + (k)*npoin_p(i)
176 ALLOCATE(knolg_p(npoin_p(i)),stat=ierr)
177 CALL check_call(ierr,
'PARTEL:KNOLG_P:2D')
179 knolg_p(j) = knolg(j,i)
182 ALLOCATE(knolg_p(npoin_p(i)*nplan),stat=ierr)
183 CALL check_call(ierr,
'PARTEL:KNOLG_P:3D')
184 DO j=1,npoin_p(i)*nplan
186 knolg_p(j) = knolg(j,i)
193 ALLOCATE(x(npoin_p(i)),stat=ierr)
194 CALL check_allocate(ierr,
'PARTEL:X')
195 ALLOCATE(y(npoin_p(i)),stat=ierr)
196 CALL check_allocate(ierr,
'PARTEL:Y')
198 x(j) = f(knolg(j,i),1)
199 y(j) = f(knolg(j,i),2)
202 ALLOCATE(x(npoin_p(i)*nplan),stat=ierr)
203 CALL check_allocate(ierr,
'PARTEL:X')
204 ALLOCATE(y(npoin_p(i)*nplan),stat=ierr)
205 CALL check_allocate(ierr,
'PARTEL:Y')
208 x(j+(l-1)*nplan) = f(knolg(j,i)+(l-1)*npoin2,1)
209 y(j+(l-1)*nplan) = f(knolg(j,i)+(l-1)*npoin2,2)
214 CALL set_mesh(fformat,nout,2,typ_elem,ndp,nptfr_p(i),
215 & nptir_p(i),nelem_p(i),npoin_p(i),ikle_p,
216 & knolg_p,knolg_p,x,y,nplan,date,time,
219 CALL check_call(ierr,
'PARTEL:SET_MESH:NOUT')
221 CALL set_mesh(fformat,nout,3,typ_elem,6,nptfr_p(i),
222 & nptir_p(i),nelem_p(i)*(nplan-1),
223 & npoin_p(i)*nplan,ikle3d_p,
224 & knolg_p,knolg_p,x,y,nplan,date,time,
227 CALL check_call(ierr,
'PARTEL:SET_MESH:NOUT')
244 & ikle_bnd(k+(l-1)*nelebd),i).EQ.0)
THEN 250 IF(fully_in) nelebd_p = nelebd_p + 1
255 CALL open_bnd(fformat,nameclm,nout,
'WRITE ',ierr,i)
257 CALL open_bnd(fformat,nameclm,nout,
'WRITE ',ierr)
259 CALL check_call(ierr,
'PARTEL:OPEN_BND')
261 ALLOCATE(ikle_bnd_p(nelebd_p*ndp_bnd),stat=ierr)
262 CALL check_allocate(ierr,
'PARTEL:IKLE_BND_P')
263 ALLOCATE(lihbor_p(nptfr_p(i)),stat=ierr)
264 CALL check_allocate(ierr,
'PARTEL:LIHBOR_P')
265 ALLOCATE(liubor_p(nptfr_p(i)),stat=ierr)
266 CALL check_allocate(ierr,
'PARTEL:LIUBOR_P')
267 ALLOCATE(livbor_p(nptfr_p(i)),stat=ierr)
268 CALL check_allocate(ierr,
'PARTEL:LIVBOR_P')
269 ALLOCATE(hbor_p(nptfr_p(i)),stat=ierr)
270 CALL check_allocate(ierr,
'PARTEL:HBOR_P')
271 ALLOCATE(ubor_p(nptfr_p(i)),stat=ierr)
272 CALL check_allocate(ierr,
'PARTEL:UBOR_P')
273 ALLOCATE(vbor_p(nptfr_p(i)),stat=ierr)
274 CALL check_allocate(ierr,
'PARTEL:VBOR_P')
275 ALLOCATE(chbord_p(nptfr_p(i)),stat=ierr)
276 CALL check_allocate(ierr,
'PARTEL:CHBORD_P')
277 ALLOCATE(litbor_p(nptfr_p(i)),stat=ierr)
278 CALL check_allocate(ierr,
'PARTEL:LITBOR_P')
279 ALLOCATE(tbor_p(nptfr_p(i)),stat=ierr)
280 CALL check_allocate(ierr,
'PARTEL:TBOR_P')
281 ALLOCATE(atbor_p(nptfr_p(i)),stat=ierr)
282 CALL check_allocate(ierr,
'PARTEL:ATBOR_P')
283 ALLOCATE(btbor_p(nptfr_p(i)),stat=ierr)
284 CALL check_allocate(ierr,
'PARTEL:BTBOR_P')
285 ALLOCATE(knogl_bnd(nelebd),stat=ierr)
286 CALL check_allocate(ierr,
'PARTEL:KNOGL_BND')
287 ALLOCATE(color_p(nptfr_p(i)),stat=ierr)
288 CALL check_allocate(ierr,
'PARTEL:COLOR')
289 ALLOCATE(nbor_p(nptfr_p(i)),stat=ierr)
290 CALL check_allocate(ierr,
'PARTEL:NBOR')
298 & ikle_bnd(k+(l-1)*nelebd),i).EQ.0)
THEN 306 m = ikle_bnd(k+(l-1)*nelebd)
316 iptfr_p = iptfr_p + 1
318 hbor_p(iptfr_p) = hbor(iptfr)
319 ubor_p(iptfr_p) = ubor(iptfr)
320 vbor_p(iptfr_p) = vbor(iptfr)
321 chbord_p(iptfr_p) = chbord(iptfr)
322 tbor_p(iptfr_p) = tbor(iptfr)
323 atbor_p(iptfr_p) = atbor(iptfr)
324 btbor_p(iptfr_p) = btbor(iptfr)
325 lihbor_p(iptfr_p) = lihbor(iptfr)
326 liubor_p(iptfr_p) = liubor(iptfr)
327 livbor_p(iptfr_p) = livbor(iptfr)
328 litbor_p(iptfr_p) = litbor(iptfr)
329 color_p(iptfr_p) = color(iptfr)
333 & typ_bnd_elem, ikle_bnd_p, nelebd_p, ndp_bnd,
334 & nelebd, knogl_bnd, .true., npoin, npoin_p(i),
336 CALL check_call(ierr,
'PARTEL:TRANSFER_GROUP_PART_INFO')
339 & nbor_p,nptfr_p(i),lihbor_p,liubor_p,
340 & livbor_p,hbor_p,ubor_p,vbor_p,chbord_p,
341 & litbor_p,tbor_p,atbor_p,btbor_p,
343 CALL check_call(ierr,
'PARTEL:SET_BND')
351 CALL check_call(ierr,
'PARTEL:CLOSE_BND')
353 DEALLOCATE(ikle_bnd_p)
367 DEALLOCATE(knogl_bnd)
382 ALLOCATE(dataval_p(npoin_p(i)),stat=ierr)
383 CALL check_allocate(ierr,
'PARTEL:DATAVAL_P')
385 ALLOCATE(dataval_p(npoin_p(i)*nplan),stat=ierr)
386 CALL check_allocate(ierr,
'PARTEL:DATAVAL_P')
390 CALL check_call(ierr,
'PARTEL:GET_DATA_TIME:NINP')
391 WRITE(
lu,*)
' -- WRITING TIMESTEP',itime-1,
' AT',
REAL(times)
396 dataval_p(j) = dataval(knolg(j,i),ivar,itime)
398 CALL add_data(fformat,nout,variable(ivar),times,itime-1,
399 & ivar.EQ.1,dataval_p,npoin_p(i),ierr)
400 CALL check_call(ierr,
'PARTEL:ADD_DATA')
405 dataval_p(j + (l-1)*npoin_p(i)) =
406 & dataval(knolg(j,i)+(l-1)*npoin2,ivar,itime)
409 CALL add_data(fformat,nout,variable(ivar),times,itime-1,
410 & ivar.EQ.1,dataval_p,npoin_p(i)*nplan,ierr)
411 CALL check_call(ierr,
'PARTEL:ADD_DATA')
415 DEALLOCATE(dataval_p)
421 CALL check_call(ierr,
'PARTEL:CLOSE_MESH:NOUT')
424 CALL check_call(ierr,
'PARTEL:CLOSE_BND:NCLI')
426 CALL check_call(ierr,
'PARTEL:CLOSE_MESH:NINP')
subroutine add_data(FFORMAT, FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
subroutine close_mesh(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
subroutine set_mesh(FFORMAT, FILE_ID, MESH_DIM, TYPELM, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, Z, IN_PLACE)
subroutine close_bnd(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
integer, parameter point_bnd_elt_type
subroutine transfer_group_part_info(FFORMAT, SOURCE_ID, DEST_ID, TYP_BND_ELEM, IKLE_BND_DEST, NELEBD_DEST, NDP_DEST, NELEBD_SRC, KNOLG_BND, TRANS_POINT, NPOIN_SRC, NPOIN_DEST, KNOLG, IERR)
integer function hash_table_get(HT, X, Y)
subroutine write_solutions(FFORMAT, NBOR, KNOGL, NDP_BND, NELEBD, NINP, NPLAN, IKLES, TIMES, KNOLG, DATE, NELEM_P, NPOIN_P, NPTFR_P, UBOR, HBOR, CHBORD, TBOR, VBOR, BTBOR, ATBOR, LIUBOR, LIHBOR, LITBOR, LIVBOR, DATAVAL, IKLE_BND, ELELG, TYP_ELEM, TIME, TITLE, NVAR, NTIMESTEP, NPTFR, NPOIN2, NPARTS, NPOIN, NOUT, NDP, F, VARIABLE, TYP_BND_ELEM, NPTIR_P, NAMEINP, NAMECLI, COLOR)
subroutine set_bnd(FFORMAT, FID, TYPE_BND_ELT, NELEBD, NDP, IKLE, NPTFR, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, LITBOR, TBOR, ATBOR, BTBOR, COLOR, IERR)
subroutine open_mesh(FFORMAT, FILE_NAME, FILE_ID, OPENMODE, IERR, MESH_NUMBER)
subroutine open_bnd(FFORMAT, FILE_NAME, FILE_ID, OPENMODE, IERR, MESH_NUMBER)
subroutine get_data_time(FFORMAT, FID, RECORD, TIME, IERR)