The TELEMAC-MASCARET system  trunk
mod_write_solutions.f
Go to the documentation of this file.
1 ! **************************
3 ! **************************
4 !
5 !***********************************************************************
6 ! PARTEL
7 !***********************************************************************
8 !
9 !BRIEF Writing field informations for partel
10 !
11  IMPLICIT NONE
12  CONTAINS
13 ! **************************
14  SUBROUTINE write_solutions
15 ! **************************
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,
23  & color)
24 !
25 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !| FFORMAT |<--| Format of the result file
27 !| NBOR |<--| Boundary file numbering
28 !| KNOGL |<--| Global to local numbering
29 !| NDP_BND |<--| Number of points for a boundary element
30 !| NELEBD |<--| Number of boundary elements
31 !| NINP |<--| Input file descriptor
32 !| NPLAN |<--| Number of planes
33 !| IKLES |<--| Connectivity table
34 !| TIMES |<--| List of times in the file
35 !| KNOLG |<--| Local to global numbering
36 !| DATE |<--| Date of the file
37 !| NELEM_P |<--| Number of elements in partitionned file
38 !| NPOIN_P |<--| Number of points in partitionned file
39 !| NPTFR_P |<--| Number of boundary points in partitionned file
40 !| UBOR |<--| U velocity on boundary points
41 !| HBOR |<--| Heigh on boundary points
42 !| TBOR |<--| Tracer values on boundary points
43 !| VBOR |<--| V velocity on boundary points
44 !| BTBOR |<--| Second thermal exchange coeff
45 !| ATBOR |<--| First thermal exchange coeff
46 !| LIUBOR |<--| Type of boundary for U
47 !| LIHBOR |<--| Type of boundary for H
48 !| LITBOR |<--| Type of boundary for Tracers
49 !| LIVBOR |<--| Type of boundary for V
50 !| DATAVAL |<--| Results array
51 !| IKLE_BND |<--| Connectivity array for boundary elements
52 !| ELELG |<--| Local to global numbering for elements
53 !| TYP_ELEM |<--| Type of the elements (TRIANGLE, ...)
54 !| TIME |<--| Time of the file
55 !| TITLE |<--| Title fo the output file
56 !| NVAR |<--| Number fo variables
57 !| NTIMESTEP |<--| Number of time-steps
58 !| NPTFR |<--| Number of boundary_points
59 !| NPOIN2 |<--| Number of 2D points
60 !| NPARTS |<--| Number of partitions
61 !| NPOIN |<--| Number of points
62 !| NOUT |<--| Output file descriptor
63 !| NDP |<--| Number of points per element
64 !| F |<--| Coordinates
65 !| VARIABLE |<--| List of variable names
66 !| TYP_BND_ELEM |<--| Type of boundary elements
67 !| NPTIR_P |<--| Number of Interface points in partitionned file
68 !| NAMEINP |<--| Name of input file
69 !| NAMECLI |<--| Name of boundary file
70 !| COLOR |<--| Colour for each boundary point
71 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72 !
76  USE mod_hash_table
77 !
78 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79 !
80  INTEGER, ALLOCATABLE, INTENT(INOUT) :: NBOR(:)
81 !
82  DOUBLE PRECISION, ALLOCATABLE, INTENT(IN) :: DATAVAL(:,:,:)
83  DOUBLE PRECISION, ALLOCATABLE, INTENT(IN) :: F(:,:)
84  TYPE(hash_table), INTENT(IN) :: KNOGL
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(:),
96  & color(:)
97  DOUBLE PRECISION, INTENT(INOUT) :: TIMES
98  DOUBLE PRECISION, ALLOCATABLE, INTENT(IN) :: HBOR(:),UBOR(:),
99  & vbor(:), chbord(:), tbor(:),atbor(:),btbor(:)
100 !
101 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102 !
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(:)
114  LOGICAL FULLY_IN
115  CHARACTER(LEN=PATH_LEN) :: NAMEOUT, NAMECLM
116  CHARACTER(LEN=11) :: EXTENS
117  EXTERNAL extens
118 !
119  DO i=1,nparts
120 !
121  WRITE(lu,*) 'TREATING SUB-DOMAIN ', i
122 !
123 ! WRITING GEOMETRY FILES FOR ALL PARTS/PROCESSORS
124 !
125  IF(partel_concat)THEN
126  nameout = trim(nameinp)//'-CONCAT'
127  nameclm = trim(namecli)//'-CONCAT'
128  CALL open_mesh(fformat,nameout,nout,'WRITE ',ierr, i)
129  ELSE
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)
133  ENDIF
134  CALL check_call(ierr,'PARTEL:OPEN_MESH:NOUT')
135 !
136 ! TITLE, THE NUMBER OF VARIABLES
137 !
138  CALL set_header(fformat,nout,title,nvar,variable,ierr)
139 !
140 ! THE MESH
141 !
142  ALLOCATE(ikle_p(nelem_p(i)*3),stat=ierr)
143  CALL check_allocate(ierr,'PARTEL:IKLE_P')
144  DO j=1,nelem_p(i)
145  ef=elelg(j,i)
146  DO k=1,3
147  ikle_p(j+(k-1)*nelem_p(i)) =
148  & hash_table_get(knogl,ikles((ef-1)*3+k),i)
149  ENDDO
150  ENDDO
151  IF(nplan.GT.1) THEN
152  ALLOCATE(ikle3d_p(nelem_p(i)*6*(nplan-1)),stat=ierr)
153  CALL check_allocate(ierr,'PARTEL:IKLE_P')
154  DO k = 1,nplan-1
155  DO j = 1,nelem_p(i)
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)
168  ENDDO
169  ENDDO
170  ENDIF
171 !
172 ! INSTEAD OF IRAND, KNOLG IS WRITTEN !!!
173 ! I.E. THE TABLE PROCESSOR-LOCAL -> PROCESSOR-GLOBAL NODE NUMBERS
174 !
175  IF(nplan.EQ.0) THEN
176  ALLOCATE(knolg_p(npoin_p(i)),stat=ierr)
177  CALL check_call(ierr,'PARTEL:KNOLG_P:2D')
178  DO j=1,npoin_p(i)
179  knolg_p(j) = knolg(j,i)
180  ENDDO
181  ELSE
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
185  ! WE FILL KNOLG WITH DUMMY VALUES BECAUSE 3D KNOLG IS NEVER USED
186  knolg_p(j) = knolg(j,i)
187  ENDDO
188  ENDIF
189 !
190 ! NODE COORDINATES X AND Y
191 !
192  IF(nplan.EQ.0) THEN
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')
197  DO j=1,npoin_p(i)
198  x(j) = f(knolg(j,i),1)
199  y(j) = f(knolg(j,i),2)
200  ENDDO
201  ELSE
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')
206  DO j=1,npoin_p(i)
207  DO l=1,nplan
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)
210  ENDDO
211  ENDDO
212  ENDIF
213  IF(nplan.EQ.0) THEN
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,
217  & x_orig,y_orig,
218  & ierr)
219  CALL check_call(ierr,'PARTEL:SET_MESH:NOUT')
220  ELSE
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,
225  & x_orig,y_orig,
226  & ierr)
227  CALL check_call(ierr,'PARTEL:SET_MESH:NOUT')
228  DEALLOCATE(ikle3d_p)
229  ENDIF
230  DEALLOCATE(x)
231  DEALLOCATE(y)
232  DEALLOCATE(knolg_p)
233  DEALLOCATE(ikle_p)
234 !
235 ! WORK ON THE BOUNDARY CONDITIONS INFORMATIONS
236 !
237  ! COMPUTE THE NUMBER OF BOUNDARY_ELEMENTS
238  nelebd_p = 0
239  DO k=1,nelebd
240  fully_in = .true.
241  DO l=1,ndp_bnd
242  ! IF EVERY POINT OF THE BOUNDARY ELEMENT IS IN THE PARTITION THEN THE ELEMENT IS AS WELL
243  IF(hash_table_get(knogl,
244  & ikle_bnd(k+(l-1)*nelebd),i).EQ.0)THEN
245  fully_in = .false.
246  EXIT
247  ENDIF
248  ENDDO
249  ! IF
250  IF(fully_in) nelebd_p = nelebd_p + 1
251  ENDDO
252 !
253  ! WRITING THE BOUNDARY CONDITIONS
254  IF(partel_concat)THEN
255  CALL open_bnd(fformat,nameclm,nout,'WRITE ',ierr,i)
256  ELSE
257  CALL open_bnd(fformat,nameclm,nout,'WRITE ',ierr)
258  ENDIF
259  CALL check_call(ierr,'PARTEL:OPEN_BND')
260  !
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')
291  j = 0
292  DO k=1,nelebd
293  knogl_bnd(k) = 0
294  ! IF BOTH POINT OF THE SEGMENT ARE IN THE PARTITION THEN THE SEGMENT IS IN THE PARTITION
295  fully_in = .true.
296  DO l=1,ndp_bnd
297  IF(hash_table_get(knogl,
298  & ikle_bnd(k+(l-1)*nelebd),i).EQ.0) THEN
299  fully_in = .false.
300  EXIT
301  ENDIF
302  ENDDO
303  IF(fully_in) THEN
304  j = j + 1
305  DO l=1,ndp_bnd
306  m = ikle_bnd(k+(l-1)*nelebd)
307  ikle_bnd_p(j+(l-1)*nelebd_p) = hash_table_get(knogl,m,i)
308  ENDDO
309  knogl_bnd(k) = j
310  ENDIF
311  ENDDO
312 !
313  iptfr_p = 0
314  DO iptfr=1,nptfr
315  IF(hash_table_get(knogl,nbor(iptfr),i).EQ.0) cycle
316  iptfr_p = iptfr_p + 1
317  nbor_p(iptfr_p) = hash_table_get(knogl,nbor(iptfr),i)
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)
330  ENDDO
331  ! Transfering group information from geometry to result file
332  CALL transfer_group_part_info(fformat,ninp,nout,
333  & typ_bnd_elem, ikle_bnd_p, nelebd_p, ndp_bnd,
334  & nelebd, knogl_bnd, .true., npoin, npoin_p(i),
335  & knolg(:,i), ierr)
336  CALL check_call(ierr,'PARTEL:TRANSFER_GROUP_PART_INFO')
337 
338  CALL set_bnd(fformat,nout,point_bnd_elt_type,nptfr_p(i),1,
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,
342  & color_p,ierr)
343  CALL check_call(ierr,'PARTEL:SET_BND')
344  !
345 
346  IF(partel_concat)THEN
347  CALL close_bnd(fformat,nout,ierr,i)
348  ELSE
349  CALL close_bnd(fformat,nout,ierr)
350  ENDIF
351  CALL check_call(ierr,'PARTEL:CLOSE_BND')
352 
353  DEALLOCATE(ikle_bnd_p)
354  DEALLOCATE(lihbor_p)
355  DEALLOCATE(liubor_p)
356  DEALLOCATE(livbor_p)
357  DEALLOCATE(hbor_p)
358  DEALLOCATE(ubor_p)
359  DEALLOCATE(vbor_p)
360  DEALLOCATE(chbord_p)
361  DEALLOCATE(litbor_p)
362  DEALLOCATE(tbor_p)
363  DEALLOCATE(atbor_p)
364  DEALLOCATE(btbor_p)
365  DEALLOCATE(color_p)
366  DEALLOCATE(nbor_p)
367  DEALLOCATE(knogl_bnd)
368 !
369 ! TIME STAMP (SECONDS)
370 !
371 !!
372 !! -------------------------------------------------------------------
373 !! MODIFICATION TO PUT ALL THE RECORDINGS IN PARALLEL
374 !! GEO FILE 08/06/2011
375 !! -------------------------------------------------------------------
376 !!
377 ! EACH RECORDING IS READ AND ONLY THE LOCAL VARIABLES ARE STORED
378 ! INTO THE PARALLEL GEO FILE
379 !
380 !
381  IF(nplan.LE.1) THEN
382  ALLOCATE(dataval_p(npoin_p(i)),stat=ierr)
383  CALL check_allocate(ierr,'PARTEL:DATAVAL_P')
384  ELSE
385  ALLOCATE(dataval_p(npoin_p(i)*nplan),stat=ierr)
386  CALL check_allocate(ierr,'PARTEL:DATAVAL_P')
387  ENDIF
388  DO itime=1,ntimestep
389  CALL get_data_time(fformat,ninp,itime-1,times,ierr)
390  CALL check_call(ierr,'PARTEL:GET_DATA_TIME:NINP')
391  WRITE(lu,*) ' -- WRITING TIMESTEP',itime-1,' AT',REAL(times)
392  DO ivar=1,nvar
393  IF(nplan.EQ.0) THEN
394  ! 2D
395  DO j=1,npoin_p(i)
396  dataval_p(j) = dataval(knolg(j,i),ivar,itime)
397  ENDDO
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')
401  ELSE
402  ! 3D
403  DO j=1,npoin_p(i)
404  DO l=1,nplan
405  dataval_p(j + (l-1)*npoin_p(i)) =
406  & dataval(knolg(j,i)+(l-1)*npoin2,ivar,itime)
407  ENDDO
408  ENDDO
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')
412  ENDIF
413  ENDDO
414  ENDDO
415  DEALLOCATE(dataval_p)
416  IF(partel_concat)THEN
417  CALL close_mesh(fformat,nout,ierr,i)
418  ELSE
419  CALL close_mesh(fformat,nout,ierr)
420  ENDIF
421  CALL check_call(ierr,'PARTEL:CLOSE_MESH:NOUT')
422  ENDDO
423  CALL close_bnd(fformat,ninp,ierr)
424  CALL check_call(ierr,'PARTEL:CLOSE_BND:NCLI')
425  CALL close_mesh(fformat,ninp,ierr)
426  CALL check_call(ierr,'PARTEL:CLOSE_MESH:NINP')
427  END SUBROUTINE
428  END MODULE mod_write_solutions
subroutine add_data(FFORMAT, FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
Definition: add_data.f:8
subroutine close_mesh(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
Definition: close_mesh.f:7
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)
Definition: set_mesh.f:9
subroutine close_bnd(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
Definition: close_bnd.f:7
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_header(FFORMAT, FILE_ID, TITLE, NVAR, VAR_NAME, IERR)
Definition: set_header.f:7
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)
Definition: set_bnd.f:9
subroutine open_mesh(FFORMAT, FILE_NAME, FILE_ID, OPENMODE, IERR, MESH_NUMBER)
Definition: open_mesh.f:7
subroutine open_bnd(FFORMAT, FILE_NAME, FILE_ID, OPENMODE, IERR, MESH_NUMBER)
Definition: open_bnd.f:7
subroutine get_data_time(FFORMAT, FID, RECORD, TIME, IERR)
Definition: get_data_time.f:7