4 & (nameinp, namecli, nparts, pmethod, fformat,
5 & namesec, namezfi, nameseu)
94 USE bief, ONLY : nbmaxnshare, nptir,
110 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMEINP
111 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMECLI
112 INTEGER,
INTENT(IN) :: NPARTS
113 INTEGER,
INTENT(IN) :: PMETHOD
114 CHARACTER(LEN=8),
INTENT(INOUT) :: FFORMAT
115 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMESEC
116 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMEZFI
117 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: NAMESEU
121 INTEGER NVAR, NPLAN, NPTFR
122 INTEGER NELEM, NPOIN, NDP, NELEM2, NPOIN2, NDP_BND
127 INTEGER,
ALLOCATABLE :: IKLES(:), IKLES_P(:)
128 INTEGER,
ALLOCATABLE :: IKLES3D(:),IKLES3D_P(:,:,:)
129 INTEGER,
ALLOCATABLE :: IRAND(:)
130 INTEGER,
ALLOCATABLE :: LIHBOR(:),LIUBOR(:)
131 INTEGER,
ALLOCATABLE :: LIVBOR(:),LITBOR(:),COLOR(:)
132 DOUBLE PRECISION,
ALLOCATABLE :: HBOR(:),UBOR(:),VBOR(:)
133 DOUBLE PRECISION,
ALLOCATABLE :: CHBORD(:)
134 DOUBLE PRECISION,
ALLOCATABLE :: TBOR(:),ATBOR(:),BTBOR(:)
135 INTEGER,
ALLOCATABLE :: NBOR(:),IKLE_BND(:)
136 INTEGER,
ALLOCATABLE :: NPOIN_P(:), NELEM_P(:), NPTFR_P(:)
137 INTEGER,
ALLOCATABLE :: NPTIR_P(:)
138 INTEGER,
ALLOCATABLE :: NUMLIQ(:)
139 INTEGER,
ALLOCATABLE :: KNOLG(:,:)
140 INTEGER,
ALLOCATABLE :: ELELG(:,:)
141 INTEGER,
ALLOCATABLE :: CUT(:), SORT(:)
143 INTEGER,
ALLOCATABLE :: PART_P(:,:)
147 DOUBLE PRECISION,
ALLOCATABLE :: F(:,:)
149 DOUBLE PRECISION TIMES
152 INTEGER :: NOUT=17, nclm=18
153 INTEGER TIME(3),DATE(3), DATE_TMP(6)
155 CHARACTER(LEN=80) :: TITLE
156 CHARACTER(LEN=32),
ALLOCATABLE :: VARIABLE(:)
157 CHARACTER(LEN=PATH_LEN) :: NAMECLM
158 CHARACTER(LEN=12) :: FMT4
161 INTEGER MAX_NPOIN_P,MAX_N_NEIGH
162 INTEGER I, J, K, L, M, ISO, IDUM
163 INTEGER ISEG, NTIMESTEP
170 INTEGER,
ALLOCATABLE :: EPART(:), NPART(:)
174 INTEGER,
ALLOCATABLE :: KP1BOR(:,:)
178 INTEGER,
ALLOCATABLE :: IFABOR(:,:), NELBOR(:)
179 INTEGER,
ALLOCATABLE :: IKLE(:,:)
183 INTEGER TDEB, TFIN, TDEBP, TFINP, TEMPS, PARSEC
185 DOUBLE PRECISION,
ALLOCATABLE :: DATAVAL(:,:,:)
187 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_NAME(:), VAR_UNIT(:)
189 INTEGER TYP_ELEM, TYP_BND_ELEM
203 INTEGER,
ALLOCATABLE :: IFAPAR(:,:)
206 INTEGER,
ALLOCATABLE :: NHALO(:)
213 INTEGER,
ALLOCATABLE :: NBRE_EF(:),EF_I(:,:)
214 INTEGER,
ALLOCATABLE :: TAB_TMP(:),EF_II(:,:)
217 INTEGER,
ALLOCATABLE :: NBRE_EF_I(:)
221 LOGICAL :: WITH_SECTIONS
225 LOGICAL :: WITH_ZONES
230 CHARACTER(LEN=11) :: EXTENS
235 LOGICAL :: WITH_WEIRS
238 INTEGER :: NCLM_IDX, OFFSET_BEGIN, OFFSET_END, WRITTEN_LINES
239 CHARACTER(LEN=PATH_LEN) :: NAMECLM_IDX
247 WRITE(
lu,*)
'+---- PARTEL: BEGINNING -------------+' 248 CALL system_clock (count=temps, count_rate=parsec)
250 IF (parsec==0) timecount = .false.
251 IF (timecount) tdeb = temps
253 WRITE(
lu,*)
'FICHIER:',nameinp
254 CALL open_mesh(fformat, nameinp, ninp,
'READ ', ierr)
255 CALL check_call(ierr,
'PARTEL:OPENMESH:INP')
257 CALL open_bnd(fformat,namecli,ninp,
'READ ',ierr)
258 CALL check_call(ierr,
'PARTEL:OPEN_BND:NCLI')
266 & typ_bnd_elem,nelebd)
268 ALLOCATE(nbre_ef_i(nparts), stat=ierr)
269 CALL check_allocate(ierr,
'NBRE_EF_I')
272 ALLOCATE(var_name(nvar),stat=ierr)
273 CALL check_allocate(ierr,
'PARTEL:VAR_NAME')
274 ALLOCATE(var_unit(nvar),stat=ierr)
275 CALL check_allocate(ierr,
'PARTEL:VAR_UNIT')
276 ALLOCATE(variable(nvar),stat=ierr)
277 CALL check_allocate(ierr,
'PARTEL:VAR_UNIT')
280 CALL check_call(ierr,
'PARTEL:GET_DATA_VAR_LIST:INP')
282 variable(i)(1:16) = var_name(i)
283 variable(i)(17:32) = var_unit(i)
292 CALL check_call(ierr,
'PARTEL:GET_MESH_DATE:INP')
294 date(i) = date_tmp(i)
295 time(i) = date_tmp(i+3)
300 WRITE(
lu,*)
'3D MESH DETECTED' 302 nelem2 = nelem/(nplan-1)
303 WRITE(
lu,*)
'NDP NODES PER ELEMENT: ',ndp
304 WRITE(
lu,*)
'NPLAN NUMBER OF MESH LEVELS: ',nplan
305 WRITE(
lu,*)
'NPOIN2 NUMBER OF 2D MESH NODES: ',npoin2
306 WRITE(
lu,*)
'NPOIN NUMBER OF 3D MESH NODES: ',npoin
307 WRITE(
lu,*)
'NELEM2 NUMBER OF 2D MESH ELEMENTS: ',nelem2
308 WRITE(
lu,*)
'NELEM NUMBER OF 3D MESH ELEMENTS: ',nelem
309 IF (mod(npoin,nplan).NE.0)
THEN 310 WRITE (
lu,*)
'BUT NPOIN2 /= NPOIN3/NPLAN!' 314 IF (mod(nelem,(nplan-1)).NE.0)
THEN 315 WRITE (
lu,*)
'BUT NELEM2 /= NELEM3/NPLAN!' 320 WRITE(
lu,*)
'THE INPUT FILE ASSUMED TO BE 3D' 324 WRITE(
lu,*)
'ONE-LEVEL MESH.' 325 WRITE(
lu,*)
'NDP NODES PER ELEMENT: ',ndp
326 WRITE(
lu,*)
'ELEMENT TYPE : ',typ_elem
327 WRITE(
lu,*)
'NPOIN NUMBER OF MESH NODES: ',npoin
328 WRITE(
lu,*)
'NELEM NUMBER OF MESH ELEMENTS: ',nelem
332 WRITE(
lu,*)
'THE INPUT FILE ASSUMED TO BE 2D' 338 ALLOCATE (ikles(nelem2*3),stat=ierr)
339 CALL check_allocate(ierr,
'IKLES')
341 ALLOCATE (ikles3d(nelem*ndp),stat=ierr)
342 CALL check_allocate(ierr,
'IKLES3D')
344 ALLOCATE (irand(npoin),stat=ierr)
345 CALL check_allocate(ierr,
'IRAND')
352 ALLOCATE (f(npoin,2),stat=ierr)
353 CALL check_allocate(ierr,
'F')
360 CALL check_call(ierr,
'PARTEL:GET_MESH_CONNECTIVITY:2D')
364 CALL check_call(ierr,
'PARTEL:GET_MESH_CONNECTIVITY:3D')
368 ikles((k-1)*3+j)=ikles3d((k-1)*6+j)
377 CALL check_call(ierr,
'PARTEL:GET_BND_IPOBO:NINP')
385 CALL check_call(ierr,
'PARTEL:GET_MESH_COORD:X')
387 CALL check_call(ierr,
'PARTEL:GET_MESH_COORD:Y')
390 CALL check_call(ierr,
'PARTEL:GET_DATA_NTIMESTEP')
392 WRITE(
lu,*)
'THERE ARE ',ntimestep,
' TIME-DEPENDENT RECORDINGS' 399 CALL get_nodes_per_element(typ_bnd_elem,ndp_bnd)
402 CALL check_call(ierr,
'PARTEL:GET_BND_NELEBD:NCLI')
404 CALL check_call(ierr,
'PARTEL:GET_BND_NPOIN:NCLI')
406 ALLOCATE(ikle_bnd(nelebd*ndp_bnd),stat=ierr)
407 CALL check_allocate(ierr,
'PARTEL:IKLE_BND')
408 ALLOCATE(nbor(nptfr),stat=ierr)
409 CALL check_allocate(ierr,
'PARTEL:NBOR')
411 ALLOCATE(lihbor(nptfr),stat=ierr)
412 CALL check_allocate(ierr,
'PARTEL:LIHBOR')
413 ALLOCATE(liubor(nptfr),stat=ierr)
414 CALL check_allocate(ierr,
'PARTEL:LIUBOR')
415 ALLOCATE(livbor(nptfr),stat=ierr)
416 CALL check_allocate(ierr,
'PARTEL:LIVBOR')
417 ALLOCATE(hbor(nptfr),stat=ierr)
418 CALL check_allocate(ierr,
'PARTEL:HBOR')
419 ALLOCATE(ubor(nptfr),stat=ierr)
420 CALL check_allocate(ierr,
'PARTEL:UBOR')
421 ALLOCATE(vbor(nptfr),stat=ierr)
422 CALL check_allocate(ierr,
'PARTEL:VBOR')
423 ALLOCATE(chbord(nptfr),stat=ierr)
424 CALL check_allocate(ierr,
'PARTEL:CHBORD')
425 ALLOCATE(litbor(nptfr),stat=ierr)
426 CALL check_allocate(ierr,
'PARTEL:LITBOR')
427 ALLOCATE(tbor(nptfr),stat=ierr)
428 CALL check_allocate(ierr,
'PARTEL:TBOR')
429 ALLOCATE(atbor(nptfr),stat=ierr)
430 CALL check_allocate(ierr,
'PARTEL:ATBOR')
431 ALLOCATE(btbor(nptfr),stat=ierr)
432 CALL check_allocate(ierr,
'PARTEL:BTBOR')
433 ALLOCATE (color(nptfr),stat=ierr)
434 CALL check_allocate(ierr,
'COLOR')
437 & ndp_bnd,ikle_bnd,ierr)
438 CALL check_call(ierr,
'PARTEL:GET_BND_CONNECTIVITY:NCLI')
444 & livbor,hbor,ubor,vbor,chbord,.true.,
445 & litbor,tbor,atbor,btbor,nptfr,ierr)
446 CALL check_call(ierr,
'PARTEL:GET_BND_VALUE:NCLI')
449 CALL check_call(ierr,
'PARTEL:GET_BND_COLOR:NCLI')
452 & numliq, dim_mesh, npoin2, nptfr, npoin, nelem2,
453 & nelbor, liubor, lihbor, nbor, ifabor, f,.true.)
469 ALLOCATE(epart(nelem2),stat=ierr)
470 CALL check_allocate(ierr,
'EPART')
471 ALLOCATE(npart(npoin2),stat=ierr)
472 CALL check_allocate(ierr,
'NPART')
477 WRITE(
lu,*)
' THE MESH PARTITIONING STEP STARTS' 482 CALL partitioner(pmethod, nelem2, npoin2, 3, nparts,
483 & ikles, epart, npart)
487 WRITE(
lu,*)
' RUNTIME OF METIS ',
488 & (1.0*(tfinp-tdebp))/(1.0*parsec),
' SECONDS' 490 WRITE(
lu,*)
' THE MESH PARTITIONING STEP HAS FINISHED' 506 ALLOCATE (nbre_ef(npoin2),stat=ierr)
507 CALL check_allocate(ierr,
'NBRE_EF')
509 ALLOCATE (part_p(npoin2,0:nbmaxnshare),stat=ierr)
510 CALL check_allocate(ierr,
'PART_P')
517 ALLOCATE (sort(npoin2),stat=ierr)
518 CALL check_allocate(ierr,
'SORT')
520 ALLOCATE (cut(npoin2),stat=ierr)
521 CALL check_allocate(ierr,
'CUT')
523 ALLOCATE (nelem_p(nparts),stat=ierr)
524 CALL check_allocate(ierr,
'NELEM_P')
526 ALLOCATE (npoin_p(nparts),stat=ierr)
527 CALL check_allocate(ierr,
'NPOIN_P')
529 ALLOCATE (nptfr_p(nparts),stat=ierr)
530 CALL check_allocate(ierr,
'NPTFR_P')
532 ALLOCATE (nptir_p(nparts),stat=ierr)
533 CALL check_allocate(ierr,
'NPTIR_P')
535 ALLOCATE (nhalo(nparts),stat=ierr)
536 CALL check_allocate(ierr,
'NHALO')
538 ALLOCATE(tab_tmp( nbmaxnshare),stat=ierr)
539 CALL check_allocate(ierr,
'TAB_TMP')
542 CALL check_allocate(ierr,
'IFAPAR')
557 IF (
code(1:3) ==
'ART')
THEN 560 noeud=ikles((ef-1)*3+k)
561 IF (irand(noeud) .NE. 0)
THEN 571 noeud=ikles((ef-1)*3+k)
572 nbre_ef(noeud)=nbre_ef(noeud)+1
584 IF(i >= 1 .AND. i <= nparts)
THEN 585 nelem_p(i)=nelem_p(i)+1
587 noeud=ikles((ef-1)*3+k)
589 npoin_p(i)=npoin_p(i)+1
601 max_nelem_p=maxval(nelem_p)
602 max_npoin_p=maxval(npoin_p)
606 ALLOCATE (elelg(max_nelem_p,nparts),stat=ierr)
607 CALL check_allocate(ierr,
'ELELG')
612 ALLOCATE(knolg(max_npoin_p,nparts),stat=ierr)
614 ALLOCATE(knolg(max_npoin_p*nplan,nparts),stat=ierr)
616 CALL check_allocate(ierr,
'KNOLG')
620 ALLOCATE (ef_i(nparts, max_nelem_p),stat=ierr)
621 CALL check_allocate(ierr,
'EF_I')
623 ALLOCATE (ef_ii(nparts, max_nelem_p),stat=ierr)
624 CALL check_allocate(ierr,
'EF_II')
634 IF(i >= 1 .AND. i <= nparts)
THEN 635 nelem_p(i)=nelem_p(i)+1
636 elelg(nelem_p(i),i)=ef
643 & nelem_p,ikles,knogl,cut_p,ef_i
644 & ,ef_ii,nptir_p,nbre_ef_i,knolg
645 & ,irand,part_p,nbre_ef)
648 max_n_neigh=maxval(part_p(:,0))
649 IF ( max_n_neigh > nbmaxnshare-1 )
THEN 650 WRITE(
lu,*)
'SERIOUS WARNING: ' 652 &
'AN INTERFACE NODE BELONGS TO ',
653 &
'MORE THAN NBMAXNSHARE-1 SUBDOMAINS' 654 WRITE(
lu,*)
'TELEMAC MAY PROTEST!' 657 WRITE (
lu,*)
'THERE IS A NODE WHICH BELONGS TO MORE THAN ',
662 IF (max_n_neigh.LT.nbmaxnshare-1) max_n_neigh = nbmaxnshare-1
665 IF (
code.NE.
' ')
THEN 666 nameclm =
code//
'PAR'//
'-CONCAT' 667 nameclm_idx =
code//
'PAR'//
'-INDEX' 669 nameclm = namecli(1:3)//
'PAR'//
'-CONCAT' 670 nameclm_idx = namecli(1:3)//
'PAR'//
'-INDEX' 672 CALL get_free_id(nclm)
673 OPEN(nclm,file=nameclm,status=
'UNKNOWN',form=
'FORMATTED')
675 CALL get_free_id(nclm_idx)
676 OPEN(nclm_idx,file=nameclm_idx,action=
'WRITE')
692 ifaloc(:)=ifabor(ef,:)
693 WHERE (ifaloc .GT. 0)
696 halo=any(ifaloc .GT. 0 .AND. ifaloc .NE. i)
700 WRITE(
lu,*)
'ERROR : NBMAXHALO TOO SMALL' 704 ifapar(1,nhalo(i))=ef_ii(i, j)
705 ifapar(2:4,nhalo(i))=ifaloc(:)
706 ifapar(5:7,nhalo(i))=ifabor(ef_i(i, j),:)
715 IF(dim_mesh.NE.3)
THEN 716 IF (
code.NE.
' ')
THEN 717 nameclm =
code//
'PAR'//extens(nparts-1,i-1)
719 nameclm = namecli(1:3)//
'PAR'//extens(nparts-1,i-1)
722 CALL get_free_id(nclm)
723 OPEN(nclm,file=nameclm,status=
'UNKNOWN',form=
'FORMATTED')
726 WRITE(nclm,*) nptfr_p(i)
738 IF(irand(knolg(k,i)).NE.0)
THEN 765 IF (epart(nelbor(k)).NE.i)
THEN 768 xseg =
REAL(f(iseg,1))
769 yseg =
REAL(f(iseg,2))
776 IF (epart(nelbor(m)).NE.i)
THEN 778 xseg =
REAL(f(-iseg,1))
779 yseg =
REAL(f(-iseg,2))
788 WRITE(
lu,*)
'ISOLATED BOUNDARY POINT', nbor(k), temp
795 & iseg, xseg, yseg, numliq(k)
796 written_lines=written_lines+1
802 IF(j.NE.nptfr_p(i))
THEN 803 WRITE(
lu,*)
'ERROR IN BOUNDARIES J=',j
804 WRITE(
lu,*)
'WHILE NPTFR_P(I)=',nptfr_p(i)
805 WRITE(
lu,*)
'WHILE L=',l
813 WRITE (nclm,*) nptir_p(i)
814 written_lines=written_lines+1
815 IF (max_n_neigh < nbmaxnshare-1) max_n_neigh = nbmaxnshare-1
817 WRITE (fmt4(2:4),
'(I3)') max_n_neigh+1
834 IF ( cut(k) /= 0 .AND. temp < idum )
THEN 838 IF ( k < nptir_p(i) )
THEN 850 IF(part_p(temp,k) .NE. i .AND.part_p(temp,k) .NE. 0)
THEN 852 tab_tmp(l)=part_p(temp, k)
858 written_lines=written_lines+nptir_p(i)
862 IF (ifapar(2+m,j)>0)
THEN 870 IF (ifapar(2+m,j)>0)
THEN 871 ifapar(2+m,j)=ifapar(2+m,j)-1
876 WRITE(nclm,
'(I9)') nhalo(i)
878 WRITE (nclm,
'(7(I9,1X))') ifapar(:,k)
880 written_lines=written_lines+nhalo(i)+1
883 offset_end=offset_end+written_lines
884 WRITE(nclm_idx,*)offset_begin
885 offset_begin=offset_end
906 ALLOCATE(ikles_p(max_nelem_p*3),stat=ierr)
908 ALLOCATE(ikles3d_p(6,max_nelem_p,nplan-1),stat=ierr)
910 CALL check_allocate(ierr,
'IKLES3D_P')
912 CALL init_dataval(dataval, npoin, nvar, ntimestep, fformat,
916 & nplan,ikles,times,knolg, date,nelem_p,
917 & npoin_p,nptfr_p,ubor,hbor,chbord,tbor,vbor,
918 & btbor,atbor,liubor,lihbor,litbor,livbor,
919 & dataval,ikle_bnd,elelg,typ_elem,time,title,
920 & nvar,ntimestep,nptfr,npoin2,nparts,npoin,
921 & nout,ndp,f,variable,typ_bnd_elem,
922 & nptir_p,nameinp,namecli,color)
943 with_sections = namesec(1:1) .NE.
' ' 944 IF (nplan.NE.0) with_sections=.false.
945 IF (with_sections)
THEN 947 WRITE(
lu,*)
'DEALING WITH SECTIONS WITH FILE ',trim(namesec)
950 WRITE(
lu,*)
'FINISHED DEALING WITH SECTIONS' 958 with_zones = namezfi(1:1) .NE.
' ' 959 IF (nplan.NE.0) with_zones = .false.
962 WRITE(
lu,*)
'DEALING WITH ZONES WITH FILE ',trim(namezfi)
964 & max_npoin_p, knolg)
965 WRITE(
lu,*)
'FINISHED DEALING WITH ZONES' 973 with_weirs = nameseu(1:1) .NE.
' ' 974 IF (nplan.NE.0) with_weirs = .false.
977 WRITE(
lu,*)
'DEALING WITH WEIRS WITH FILE ',trim(nameseu)
979 WRITE(
lu,*)
'FINISHED DEALING WITH WEIRS' 996 DEALLOCATE(ikles3d_p)
1006 DEALLOCATE(variable)
1011 CALL system_clock (count=temps, count_rate=parsec)
1013 WRITE(
lu,*)
'OVERALL TIMING: ',
1014 & (1.0*(tfin-tdeb))/(1.0*parsec),
' SECONDS' 1018 WRITE(
lu,*)
'+---- PARTEL: NORMAL TERMINATION ----+' subroutine get_bnd_npoin(FFORMAT, FID, TYPE_BND_ELEM, NPTFR, IERR)
subroutine handle_sections(NAMESEC, NPARTS, NELEM, NDP, IKLE, NPOIN, F, KNOGL)
subroutine hash_table_create(HT, TABLE_SIZE)
subroutine get_bnd_connectivity(FFORMAT, FID, TYP_BND_ELEM, NELEBD, NDP, IKLE_BND, IERR)
subroutine get_bnd_color(FFORMAT, FID, TYP_BND_ELEM, NELEBD, COLOR, IERR)
subroutine get_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
integer, parameter maxnproc
subroutine partel(NAMEINP, NAMECLI, NPARTS, PMETHOD, FFORMAT, NAMESEC, NAMEZFI, NAMESEU)
subroutine compute_boundary_and_interface(NPARTS, NDP_2D, NPOIN_P, NPTFR_P, ELELG, NELEM_P, IKLES, KNOGL, CUT_P, EF_I, EF_II, NPTIR_P, NBRE_EF_I, KNOLG, IRAND, PART_P, NBRE_EF)
subroutine numbering_open_boundaries(NAMEINP, IKLE, IKLES, KP1BOR, NUMLIQ, DIM_MESH, NPOIN2, NPTFR, NPOIN, NELEM2, NELBOR, LIUBOR, LIHBOR, NBOR, IFABOR, F, LISTIN)
subroutine get_bnd_ipobo(FFORMAT, FID, NPOIN, NELEBD, TYP_BND_ELEM, IPOBO, IERR)
subroutine handle_friction_zones(NAMEZFI, NPARTS, NPOIN, NPOIN_P, MAX_NPOIN_P, KNOLG)
subroutine get_bnd_nelem(FFORMAT, FID, TYPE_BND_ELEM, NELEM, IERR)
subroutine read_mesh_info(FFORMAT, NFIC, TITLE, NVAR, NPOIN, TYP_ELEM, NELEM, NPTFR, NPTIR, NDP, NPLAN, X_ORIG, Y_ORIG, TYP_BND_ELEM, NELEBD)
integer, parameter nbmaxhalo
Y. AUDOUIN & J-M HERVOUET (EDF LAB, LNHE) 09/05/2014 V7P0 First version.
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 hash_table_destroy(HT)
subroutine get_bnd_numbering(FFORMAT, FID, TYP_BND_ELEM, NPTFR, NBOR, IERR)
subroutine get_mesh_date(FFORMAT, FID, DATE, IERR)
subroutine init_dataval(DATAVAL, NPOIN, NVAR, NTIMESTEP, FFORMAT, NINP, VARIABLE)
recursive subroutine hash_table_insert(HT, X, Y, V)
subroutine handle_weirs(NAMESEU, NPARTS, KNOGL, NPOIN2)
subroutine get_mesh_coord(FFORMAT, FID, JDIM, NDIM, NPOIN, COORD, IERR)
subroutine get_bnd_value(FFORMAT, FID, TYP_BND_ELEM, NELEBD, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, TRAC, LITBOR, TBOR, ATBOR, BTBOR, NPTFR, IERR)
subroutine get_mesh_connectivity(FFORMAT, FID, TYP_ELEM, IKLE, NELEM, NDP, 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_ntimestep(FFORMAT, FID, NTIMESTEP, IERR)