38 CHARACTER(LEN=250) :: file_name
43 INTEGER(KIND=K8) :: pos_title
44 INTEGER(KIND=K8) :: pos_nvar
45 INTEGER(KIND=K8) :: pos_varinfo
46 INTEGER(KIND=K8) :: pos_ib
47 INTEGER(KIND=K8) :: pos_date
48 INTEGER(KIND=K8) :: pos_num
49 INTEGER(KIND=K8) :: pos_ikle
50 INTEGER(KIND=K8) :: pos_ipobo
51 INTEGER(KIND=K8) :: pos_coord
52 INTEGER(KIND=K8) :: pos_data
55 INTEGER :: size_data_set
66 CHARACTER(LEN=VAR_SIZE),
ALLOCATABLE :: var_list(:)
68 INTEGER :: typ_bnd_elt
75 INTEGER :: mesh_idx_id
78 INTEGER :: cli_line_begin
79 INTEGER :: cli_line_end
116 INTEGER,
INTENT(IN) :: NDP
117 INTEGER,
INTENT(IN) :: NDIM
118 INTEGER,
INTENT(OUT) :: TYP_ELT
135 &(file_name,
endian,file_id,ierr)
173 INTEGER,
INTENT(IN) :: FILE_ID
174 CHARACTER(LEN=*),
INTENT(IN) :: FILE_NAME
175 CHARACTER(LEN=13),
INTENT(INOUT) :: ENDIAN
176 INTEGER,
INTENT(OUT) :: IERR
178 INTEGER(KIND=K4) :: I
179 LOGICAL :: FILE_EXIST
183 INQUIRE(file=file_name,exist=file_exist)
184 IF(.NOT.file_exist)
RETURN 186 #if defined NO_CONVERT_ENDIAN 188 OPEN(file=file_name, action=
'READ', unit=file_id,
189 & form=
'UNFORMATTED', access=
'STREAM', iostat=ierr)
191 OPEN(file=file_name, action=
'READ', unit=file_id,
192 & form=
'UNFORMATTED', access=
'STREAM',convert=endian,
197 & trim(file_name)//
': '//
198 &
'IDENTIFY_ENDIAN_TYPE:OPEN:'//endian
202 READ(file_id,pos=1,iostat=ierr) i
211 & trim(file_name)//
': '//
212 &
'IDENTIFY_ENDIAN_TYPE:READ:'//endian
217 #if defined NO_CONVERT_ENDIAN 223 & trim(file_name)//
': '//
224 &
'IDENTIFY_ENDIAN_TYPE: Wrong endian of the file' 231 & trim(file_name)//
': '//
232 &
'IDENTIFY_ENDIAN_TYPE:READ:'//endian
236 IF( endian.EQ.
'LITTLE_ENDIAN' )
THEN 237 ENDIAN =
'BIG_ENDIAN ' 239 ENDIAN =
'LITTLE_ENDIAN' 241 OPEN(file=file_name, action=
'READ', unit=file_id,
242 & form=
'UNFORMATTED', access=
'STREAM',convert=endian,
245 error_message =
'ERROR IN '//
246 & trim(file_name)//
': '//
247 &
'IDENTIFY_ENDIAN_TYPE:OPEN:'//endian
250 READ(file_id,pos=1,iostat=ierr) i
253 error_message =
'ERROR IN '//
254 & trim(file_name)//
': '//
255 &
'IDENTIFY_ENDIAN_TYPE:READ:'//endian
260 ierr = hermes_invalid_serafin_file
262 error_message =
'ERROR IN '//
263 & trim(file_name)//
': '//
264 &
'IDENTIFY_ENDIAN_TYPE:READ:'//endian
278 &(file_name,file_id,openmode,fformat,ierr,mesh_number)
315 INTEGER,
INTENT(OUT) :: FILE_ID
316 CHARACTER(LEN=9),
INTENT(IN) :: OPENMODE
317 CHARACTER(LEN=*),
INTENT(IN) :: FILE_NAME
318 CHARACTER(LEN=8),
INTENT(INOUT) :: FFORMAT
319 INTEGER,
INTENT(OUT) :: IERR
320 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
322 INTEGER(KIND=K8) :: MY_POS, I, POS, FSIZE
323 INTEGER(KIND=K8) :: OFFSET_BEGIN, OFFSET_END
324 INTEGER(KIND=K4) :: B1, B2, IB(10), IDUM, TAG
325 INTEGER :: SRF_ID, NTIMESTEP, FD
326 CHARACTER(LEN=9) :: SRF_OPENMODE
327 CHARACTER(LEN=200) :: MSG
328 #if defined NO_INQUIRE_SIZE 334 INQUIRE(file=file_name, number=fd)
342 CALL get_free_id(file_id)
344 CALL add_obj(
hash,file_id,srf_id,ierr)
346 error_message =
'ERROR IN '//
347 & trim(file_name)//
': '//
348 &
'OPEN_MESH_SRF:ADD_OBJ' 357 IF(openmode(1:5).EQ.
'WRITE')
THEN 358 srf_openmode =
'READWRITE' 360 srf_openmode = openmode
366 #if defined NO_CONVERT_ENDIAN 367 OPEN(file=file_name, action=srf_openmode, unit=file_id,
368 & form=
'UNFORMATTED', access=
'STREAM',
369 & iomsg=msg, iostat=ierr)
371 OPEN(file=file_name, action=srf_openmode, unit=file_id,
372 & form=
'UNFORMATTED', access=
'STREAM',convert=endian,
373 & iomsg=msg, iostat=ierr)
376 error_message =
'ERROR IN '//
377 & trim(file_name)//
': '//
378 &
'OPEN_MESH_SRF:OPEN'//
'\n'//msg
382 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 385 & mesh_number, offset_begin, offset_end)
392 IF(openmode(1:4).EQ.
'READ')
THEN 405 READ(file_id,pos=my_pos,iostat=ierr)
408 error_message =
'ERROR IN '//
410 &
'OPEN_MESH_SRF:READNVAR' 414 ALLOCATE(
srf_obj_tab(srf_id)%VAR_LIST(b1+b2),stat=ierr)
416 error_message =
'ERROR IN '//
418 &
'OPEN_MESH_SRF:VAR_LIST' 423 READ(file_id,pos=pos+4,iomsg=msg,iostat=ierr)
426 error_message =
'ERROR IN '//
428 &
'OPEN_MESH_SRF:READ_VAR_LIST'//
'\N'//msg
437 READ(file_id, pos=my_pos, iostat=ierr) ib(1:10)
439 error_message =
'ERROR IN '//
441 &
'OPEN_MESH_SRF:READ_IB' 469 READ(file_id,pos=my_pos,iostat=ierr) ib(1:4)
471 error_message =
'ERROR IN '//
473 &
'OPEN_MESH_SRF:READ_NELEM*' 484 srf_obj_tab(srf_id)%TYP_BND_ELT = point_bnd_elt_type
501 READ(file_id,pos=
srf_obj_tab(srf_id)%POS_COORD) tag
509 ierr = hermes_invalid_serafin_file
531 READ(file_id,pos=my_pos-4,iostat=ierr) idum
534 READ(file_id,iostat=ierr) idum
536 error_message =
'ERROR IN '//
538 &
'OPEN_MESH_SRF:READ_IPOBO_VAL' 549 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 551 & int((offset_end-(
srf_obj_tab(srf_id)%POS_DATA-1))
554 #if defined NO_INQUIRE_SIZE 559 READ(file_id,pos=my_pos+4,iostat=ierr) time
561 ntimestep = ntimestep + 1
562 my_pos = my_pos +
srf_obj_tab(srf_id)%SIZE_DATA_SET
569 INQUIRE(unit=file_id,size=fsize)
571 ntimestep = int((fsize - (
srf_obj_tab(srf_id)%POS_DATA - 1) )
620 &(file_name,file_id,openmode,ierr,mesh_number)
649 CHARACTER(LEN=*),
INTENT(IN) :: FILE_NAME
650 INTEGER,
INTENT(IN) :: FILE_ID
651 CHARACTER(LEN=9),
INTENT(IN) :: OPENMODE
652 INTEGER,
INTENT(OUT) :: IERR
653 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
655 INTEGER SRF_ID,I,NPTFR
657 CHARACTER(LEN=9) :: REAL_OPENMODE
659 CALL get_obj(
hash,file_id,srf_id,ierr)
661 error_message =
'ERROR WITH IF '//i2char(file_id)//
': '//
662 &
'OPEN_BND_SRF:GET_OBJ' 666 real_openmode=openmode
668 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 671 IF(openmode(1:5)==
'WRITE')
THEN 672 real_openmode=
'READWRITE' 685 INQUIRE(file=file_name,opened=isopened)
687 INQUIRE(file=file_name,number=
srf_obj_tab(srf_id)%NCLI)
692 & form=
'FORMATTED',action=real_openmode,iostat=ierr)
694 error_message =
'ERROR IN '//
696 &
'OPEN_BND_SRF:OPEN' 703 IF(real_openmode(1:5).NE.
'WRITE')
THEN 706 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 725 ELSE IF (ierr.GT.0)
THEN 728 error_message =
'ERROR IN '//
730 &
'OPEN_BND_SRF:READ' 747 &(file_id,ierr,mesh_number)
776 INTEGER,
INTENT(IN) :: FILE_ID
777 INTEGER,
INTENT(OUT) :: IERR
778 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
780 INTEGER SRF_ID, LINE_BEGIN, LINE_END
782 CALL get_obj(
hash,file_id,srf_id,ierr)
784 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
785 &
'CLOSE_BND_SRF:GET_OBJ' 792 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 797 & mesh_number, line_begin, line_end)
803 error_message =
'ERROR IN '//
805 &
'CLOSE_BND_SRF:CLOSE' 814 &(file_id,ierr,mesh_number)
844 INTEGER,
INTENT(IN) :: FILE_ID
845 INTEGER,
INTENT(OUT) :: IERR
846 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
849 INTEGER(KIND=K8) :: OFFSET
852 INQUIRE(unit=file_id, opened=isopen)
857 CALL get_obj(
hash,file_id,srf_id,ierr)
859 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
860 &
'CLOSE_MESH:GET_OBJ' 866 IF(
PRESENT(mesh_number).AND.partel_concat)
THEN 867 INQUIRE(file_id,pos=offset)
879 CLOSE(file_id,iostat=ierr)
881 error_message =
'ERROR IN '//
883 &
'CLOSE_MESH_SRF:CLOSE' 929 &(file_id,title,ierr)
950 INTEGER,
INTENT(IN) :: FILE_ID
951 CHARACTER(LEN=TITLE_SIZE),
INTENT(OUT) :: TITLE
952 INTEGER,
INTENT(OUT) :: IERR
954 INTEGER(KIND=K8) :: MY_POS
957 CALL get_obj(
hash,file_id,srf_id,ierr)
959 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
960 &
'GET_MESH_TITLE:GET_OBJ' 965 READ(file_id,pos=my_pos,iostat=ierr)
968 error_message =
'ERROR IN '//
970 &
'GET_MESH_TITLE_SRF:READ' 1001 INTEGER,
INTENT(IN) :: FILE_ID
1002 INTEGER,
INTENT(INOUT) :: DATE(6)
1003 INTEGER,
INTENT(OUT) :: IERR
1005 INTEGER(KIND=K8) :: MY_POS
1009 CALL get_obj(
hash,file_id,srf_id,ierr)
1011 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1012 &
'GET_MESH_DATE_SRF:GET_OBJ' 1017 date(1:6) = (/ 0,0,0,0,0,0 /)
1021 READ(file_id,pos=my_pos,iostat=ierr) (date(i),i=1,6)
1023 error_message =
'ERROR IN '//
1025 &
'GET_MESH_DATE_SRF:READ' 1036 &(file_id,typ_elt,nelem,ierr)
1058 INTEGER,
INTENT(IN) :: FILE_ID
1059 INTEGER,
INTENT(IN) :: TYP_ELT
1060 INTEGER,
INTENT(OUT) :: NELEM
1061 INTEGER,
INTENT(OUT) :: IERR
1065 CALL get_obj(
hash,file_id,srf_id,ierr)
1067 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1068 &
'GET_MESH_NELEM_SRF:GET_OBJ' 1084 &(file_id,typ_elt,ndp,ierr)
1106 INTEGER,
INTENT(IN) :: FILE_ID
1107 INTEGER,
INTENT(IN) :: TYP_ELT
1108 INTEGER,
INTENT(OUT) :: NDP
1109 INTEGER,
INTENT(OUT) :: IERR
1113 CALL get_obj(
hash,file_id,srf_id,ierr)
1115 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1116 &
'GET_MESH_NPOIN_PER_ELEMENT_SRF:GET_OBJ' 1131 &(file_id,typ_elt,ikle,nelem,ndp,ierr)
1157 INTEGER,
INTENT(IN) :: FILE_ID
1158 INTEGER,
INTENT(IN) :: TYP_ELT
1159 INTEGER,
INTENT(IN) :: NELEM
1160 INTEGER,
INTENT(IN) :: NDP
1161 INTEGER,
INTENT(INOUT) :: IKLE(nelem*ndp)
1162 INTEGER,
INTENT(OUT) :: IERR
1164 INTEGER :: SRF_ID, ARRAY_SIZE
1165 INTEGER(KIND=K8) :: MY_POS
1167 INTEGER(KIND=K4) :: TMP
1169 CALL get_obj(
hash,file_id,srf_id,ierr)
1171 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1172 &
'GET_MESH_CONNECTIVITY_SRF:GET_OBJ' 1181 READ(file_id,pos=my_pos-4,iostat=ierr) tmp
1183 READ(file_id,iostat=ierr) (ikle(i),i=1,array_size)
1185 error_message =
'ERROR IN '//
1187 &
'GET_MESH_CONNECTIVITY_SRF:READ' 1198 &(file_id,npoin,ierr)
1219 INTEGER,
INTENT(IN) :: FILE_ID
1220 INTEGER,
INTENT(OUT) :: NPOIN
1221 INTEGER,
INTENT(OUT) :: IERR
1225 CALL get_obj(
hash,file_id,srf_id,ierr)
1227 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1228 &
'GET_MESH_NPOIN_SRF:GET_OBJ' 1240 &(file_id,nplan,ierr)
1261 INTEGER,
INTENT(IN) :: FILE_ID
1262 INTEGER,
INTENT(OUT) :: NPLAN
1263 INTEGER,
INTENT(OUT) :: IERR
1267 CALL get_obj(
hash,file_id,srf_id,ierr)
1269 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1270 &
'GET_MESH_NPLAN_SRF:GET_OBJ' 1282 &(file_id,x_orig,y_orig,ierr)
1304 INTEGER,
INTENT(IN) :: FILE_ID
1305 INTEGER,
INTENT(INOUT) :: X_ORIG, Y_ORIG
1306 INTEGER,
INTENT(OUT) :: IERR
1310 CALL get_obj(
hash,file_id,srf_id,ierr)
1312 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1313 &
'GET_MESH_ORIG_SRF:GET_OBJ' 1326 &(file_id,ndim,ierr)
1347 INTEGER,
INTENT(IN) :: FILE_ID
1348 INTEGER,
INTENT(OUT) :: NDIM
1349 INTEGER,
INTENT(OUT) :: IERR
1353 CALL get_obj(
hash,file_id,srf_id,ierr)
1355 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1356 &
'GET_MESH_DIMENSION_SRF:GET_OBJ' 1368 &(file_id,jdim,npoin,coord,ierr)
1391 INTEGER,
INTENT(IN) :: FILE_ID
1392 INTEGER,
INTENT(IN) :: JDIM
1393 INTEGER,
INTENT(IN) :: NPOIN
1394 DOUBLE PRECISION,
INTENT(INOUT) :: COORD(npoin)
1395 INTEGER,
INTENT(OUT) :: IERR
1397 INTEGER(KIND=K8) :: MY_POS
1399 INTEGER :: I, ARRAY_SIZE
1401 INTEGER(KIND=K4) :: TAG
1402 REAL(KIND=R4),
ALLOCATABLE :: COORD_2(:)
1404 CALL get_obj(
hash,file_id,srf_id,ierr)
1406 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1407 &
'GET_MESH_COORD_SRF:GET_OBJ' 1415 IF ((jdim.GT.0).AND.(jdim.LE.2))
THEN 1417 & + int((jdim-1)*(4 + array_size*dbl_typ + 4),k8)
1421 ierr = hermes_wrong_axe_err
1422 error_message =
'ERROR IN '//
1424 &
'COORDINATE NUMBER ('//trim(i2char(jdim))//
1425 &
') NOT BETWEEN 0 AND '//i2char(2)
1429 READ(file_id,pos=my_pos-4,iostat=ierr) tag
1431 IF(dbl_typ.EQ.4)
THEN 1432 ALLOCATE(coord_2(array_size),stat=ierr)
1434 error_message =
'ERROR IN '//
1439 READ(file_id,iostat=ierr) (coord_2(i),i=1,array_size)
1440 coord = dble(coord_2)
1443 READ(file_id,iostat=ierr) (coord(i),i=1,array_size)
1446 error_message =
'ERROR IN '//
1448 &
'GET_MESH_COORD_SRF:READ' 1458 &(file_id,knolg,npoin,ierr)
1481 INTEGER,
INTENT(IN) :: FILE_ID
1482 INTEGER,
INTENT(IN) :: NPOIN
1483 INTEGER,
INTENT(INOUT) :: KNOLG(npoin)
1484 INTEGER,
INTENT(OUT) :: IERR
1486 INTEGER(KIND=K8) :: MY_POS
1488 INTEGER :: ARRAY_SIZE,I
1489 INTEGER(KIND=K4) :: TMP
1491 CALL get_obj(
hash,file_id,srf_id,ierr)
1493 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1494 &
'GET_MESH_L2G_NUMBERING_SRF:GET_OBJ' 1502 READ(file_id,pos=my_pos-4,iostat=ierr) tmp
1503 READ(file_id,iostat=ierr) (knolg(i),i=1,array_size)
1505 error_message =
'ERROR IN '//
1507 &
'GET_MESH_L2G_NUMBERING_SRF:READ' 1517 &(file_id,nptir,ierr)
1538 INTEGER,
INTENT(IN) :: FILE_ID
1539 INTEGER,
INTENT(OUT) :: NPTIR
1540 INTEGER,
INTENT(OUT) :: IERR
1545 CALL get_obj(
hash,file_id,srf_id,ierr)
1547 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1548 &
'GET_MESH_NPTIR_SRF:GET_OBJ' 1563 &(file_id,npoin,ipobo,ierr)
1587 INTEGER,
INTENT(IN) :: FILE_ID
1588 INTEGER,
INTENT(IN) :: NPOIN
1589 INTEGER,
INTENT(INOUT) :: IPOBO(npoin)
1590 INTEGER,
INTENT(OUT) :: IERR
1592 INTEGER(KIND=K8) :: MY_POS
1594 INTEGER :: ARRAY_SIZE, I
1595 INTEGER(KIND=K4) TMP
1597 CALL get_obj(
hash,file_id,srf_id,ierr)
1599 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1600 &
'GET_BND_IPOBO_SRF:GET_OBJ' 1608 READ(file_id,pos=my_pos-4,iostat=ierr) tmp
1609 READ(file_id,iostat=ierr) (ipobo(i),i=1,array_size)
1611 error_message =
'ERROR IN '//
1613 &
'GET_MESH_IPOBO_SRF:READ' 1624 &(file_id,typ_elem_bnd,nptfr,nbor,ierr)
1648 INTEGER,
INTENT(IN) :: FILE_ID,NPTFR,TYP_ELEM_BND
1649 INTEGER,
INTENT(INOUT) :: NBOR(nptfr)
1650 INTEGER,
INTENT(OUT) :: IERR
1654 CALL get_obj(
hash,file_id,srf_id,ierr)
1656 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1657 &
'GET_BND_IPOBO_SRF:GET_OBJ' 1662 & point_bnd_elt_type,nbor,ierr)
1664 error_message =
'ERROR IN '//
1666 &
'GET_BND_NUMBERING_SRF:GET_BND_CONNECTIVITY_SRF' 1694 INTEGER,
INTENT(IN) :: FILE_ID
1695 INTEGER,
INTENT(IN) :: TYPE_BND_ELEM
1696 INTEGER,
INTENT(INOUT) :: NELEM
1697 INTEGER,
INTENT(OUT) :: IERR
1701 CALL get_obj(
hash,file_id,srf_id,ierr)
1703 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1704 &
'GET_BND_NELEM_SRF:GET_OBJ' 1709 IF(
srf_obj_tab(srf_id)%TYP_BND_ELT.EQ.type_bnd_elem)
THEN 1721 &(file_id,typ_bnd_elt,nelebd,ndp,ikle,ierr)
1745 INTEGER,
INTENT(IN) :: FILE_ID
1746 INTEGER,
INTENT(IN) :: TYP_BND_ELT
1747 INTEGER,
INTENT(IN) :: NELEBD
1748 INTEGER,
INTENT(IN) :: NDP
1749 INTEGER,
INTENT(INOUT) :: IKLE(nelebd*ndp)
1750 INTEGER,
INTENT(OUT) :: IERR
1752 INTEGER :: SRF_ID, I
1753 DOUBLE PRECISION :: DDUM
1756 CALL get_obj(
hash,file_id,srf_id,ierr)
1758 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1759 &
'GET_BND_CONNECTIVITY_SRF:GET_OBJ' 1764 IF(
srf_obj_tab(srf_id)%TYP_BND_ELT.NE.typ_bnd_elt)
THEN 1765 ierr = hermes_wrong_element_type_err
1766 error_message =
'GIVEN BOUNDARY ELEMENT TYPE :'//
1767 & i2char(typ_bnd_elt)//
1768 &
' IS NOT THE SAME AS THE ONE IN THE FILE: '//
1780 READ(
srf_obj_tab(srf_id)%NCLI,*,iostat=ierr) idum,idum,idum,
1782 & ddum ,idum,ddum,ddum,ddum,
1786 error_message =
'ERROR IN '//
1788 &
'GET_BND_CONNECTIVITY_SRF:READ:END OF FILE' 1790 ELSE IF (ierr.GE.0)
THEN 1793 error_message =
'ERROR IN '//
1795 &
'GET_BND_CONNECTIVITY_SRF:READ' 1807 &(file_id,typ_bnd_elt,nelebd,color,ierr)
1830 INTEGER,
INTENT(IN) :: FILE_ID
1831 INTEGER,
INTENT(IN) :: TYP_BND_ELT
1832 INTEGER,
INTENT(IN) :: NELEBD
1833 INTEGER,
INTENT(INOUT) :: COLOR(nelebd)
1834 INTEGER,
INTENT(OUT) :: IERR
1836 INTEGER :: SRF_ID, I
1837 DOUBLE PRECISION :: DDUM
1840 CALL get_obj(
hash,file_id,srf_id,ierr)
1842 error_message =
'ERROR WITH ID '//
1844 &
'GET_BND_CONNECTIVITY_SRF:GET_OBJ' 1849 IF(
srf_obj_tab(srf_id)%TYP_BND_ELT.NE.typ_bnd_elt)
THEN 1850 ierr = hermes_wrong_element_type_err
1851 error_message =
'GIVEN BOUNDARY ELEMENT TYPE :'//
1852 & i2char(typ_bnd_elt)//
1853 &
' IS NOT THE SAME AS THE ONE IN THE FILE: '//
1865 READ(
srf_obj_tab(srf_id)%NCLI,*,iostat=ierr) idum,idum,idum,
1867 & ddum ,idum,ddum,ddum,ddum,
1871 error_message =
'ERROR IN '//
1873 &
'GET_BND_CONNECTIVITY_SRF:READ:END OF FILE' 1875 ELSE IF (ierr.GT.0)
THEN 1878 error_message =
'ERROR IN '//
1880 &
'GET_BND_CONNECTIVITY_SRF:READ' 1892 &(file_id,typ_bnd_elem,nptfr,lihbor,liubor,
1893 & livbor,hbor,ubor,vbor,chbord,trac,
1894 & litbor,tbor,atbor,btbor, ierr)
1929 INTEGER,
INTENT(IN) :: FILE_ID
1930 INTEGER,
INTENT(IN) :: TYP_BND_ELEM
1931 INTEGER,
INTENT(IN) :: NPTFR
1932 INTEGER,
INTENT(INOUT) :: LIUBOR(nptfr),LIVBOR(nptfr)
1933 INTEGER,
INTENT(INOUT) :: LIHBOR(nptfr),LITBOR(*)
1934 DOUBLE PRECISION,
INTENT(INOUT) :: UBOR(*),VBOR(*)
1935 DOUBLE PRECISION,
INTENT(INOUT) :: HBOR(nptfr),CHBORD(nptfr)
1936 DOUBLE PRECISION,
INTENT(INOUT) :: TBOR(*),ATBOR(*)
1937 DOUBLE PRECISION,
INTENT(INOUT) :: BTBOR(*)
1938 LOGICAL,
INTENT(IN) :: TRAC
1939 INTEGER,
INTENT(OUT) :: IERR
1941 INTEGER :: SRF_ID, I
1943 DOUBLE PRECISION :: DDUM
1945 CALL get_obj(
hash,file_id,srf_id,ierr)
1947 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
1948 &
'GET_BND_VALUE_SRF:GET_OBJ' 1953 IF(
srf_obj_tab(srf_id)%TYP_BND_ELT.NE.typ_bnd_elem)
THEN 1954 ierr = hermes_wrong_element_type_err
1955 error_message =
'GIVEN BOUNDARY ELEMENT TYPE :'//
1956 & i2char(typ_bnd_elem)//
1957 &
' IS NOT THE SAME AS THE ONE IN THE FILE: '//
1972 & lihbor(i),liubor(i),livbor(i),
1973 & hbor(i) ,ubor(i) ,vbor(i),
1974 & chbord(i) ,litbor(i),
1975 & tbor(i),atbor(i),btbor(i),
1979 & lihbor(i),liubor(i),livbor(i),
1980 & hbor(i) ,ubor(i) ,vbor(i),
1981 & chbord(i) ,idum,ddum,ddum,ddum,
1986 error_message =
'ERROR IN '//
1988 &
'GET_BND_VALUE_SRF:READ:END OF FILE' 1990 ELSE IF (ierr.GT.0)
THEN 1993 error_message =
'ERROR IN '//
1995 &
'GET_BND_VALUE_SRF:READ' 2007 &(file_id,type_bnd_elem,nptfr,ierr)
2029 INTEGER,
INTENT(IN) :: FILE_ID
2030 INTEGER,
INTENT(IN) :: TYPE_BND_ELEM
2031 INTEGER,
INTENT(OUT) :: NPTFR
2032 INTEGER,
INTENT(OUT) :: IERR
2036 CALL get_obj(
hash,file_id,srf_id,ierr)
2038 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2039 &
'GET_BND_NPOIN_SRF:GET_OBJ' 2043 IF(
srf_obj_tab(srf_id)%TYP_BND_ELT.EQ.type_bnd_elem)
THEN 2059 &(file_id,nvar,ierr)
2080 INTEGER,
INTENT(IN) :: FILE_ID
2081 INTEGER,
INTENT(OUT) :: NVAR
2082 INTEGER,
INTENT(OUT) :: IERR
2086 CALL get_obj(
hash,file_id,srf_id,ierr)
2088 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2089 &
'GET_DATA_NVAR_SRF:GET_OBJ' 2101 &(file_id,nvar,var_list,unit_list,ierr)
2124 INTEGER,
INTENT(IN) :: FILE_ID
2125 INTEGER,
INTENT(IN) :: NVAR
2126 CHARACTER(LEN=16),
INTENT(INOUT) :: VAR_LIST(nvar)
2127 CHARACTER(LEN=16),
INTENT(INOUT) :: UNIT_LIST(nvar)
2128 INTEGER,
INTENT(OUT) :: IERR
2133 CALL get_obj(
hash,file_id,srf_id,ierr)
2135 error_message =
'ERROR IN '//
2137 &
'GET_DATA_VAR_LIST_SRF:GET_OBJ' 2144 ierr = hermes_wrong_array_size_err
2145 error_message =
'ERROR IN '//
2147 &
'WRON NUMBER OF VARIABLE GIVEN: '//i2char(nvar)//
2152 var_list(i) = trim(
srf_obj_tab(srf_id)%VAR_LIST(i)(1:16))
2153 unit_list(i) = trim(
srf_obj_tab(srf_id)%VAR_LIST(i)(17:32))
2162 &(file_id,ntimestep,ierr)
2183 INTEGER,
INTENT(IN) :: FILE_ID
2184 INTEGER,
INTENT(OUT) :: NTIMESTEP
2185 INTEGER,
INTENT(OUT) :: IERR
2189 CALL get_obj(
hash,file_id,srf_id,ierr)
2191 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2192 &
'GET_DATA_NTIMSTEP_SRF:GET_OBJ' 2204 &(file_id,record,time,ierr)
2231 INTEGER,
INTENT(IN) :: FILE_ID
2232 INTEGER,
INTENT(IN) :: RECORD
2233 DOUBLE PRECISION,
INTENT(INOUT) :: TIME
2234 INTEGER,
INTENT(OUT) :: IERR
2236 INTEGER(KIND=K8) :: MY_POS
2239 INTEGER :: IREC,NTIMESTEP
2241 CALL get_obj(
hash,file_id,srf_id,ierr)
2243 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2244 &
'GET_DATA_TIME_SRF:GET_OBJ' 2250 IF((record.GE.ntimestep.OR.record.LT.0).AND.
2251 & ntimestep.GT.0)
THEN 2252 ierr = hermes_record_unknown_err
2253 error_message =
'ERROR IN '//
2255 &
'RECORD: '//i2char(record)//
' IS NOT WITHIN [0, '//
2256 & i2char(ntimestep-1)//
']' 2263 & + int(irec,k8)*
srf_obj_tab(srf_id)%SIZE_DATA_SET
2266 READ(file_id,pos=my_pos,iostat=ierr) w
2269 READ(file_id,pos=my_pos,iostat=ierr) time
2272 error_message =
'ERROR IN '//
2274 &
'GET_DATA_TIME_SRF:READ' 2284 &(file_id,record,var_name,res_value,n,ierr)
2315 INTEGER,
INTENT(IN) :: FILE_ID
2316 INTEGER,
INTENT(IN) :: RECORD, N
2317 CHARACTER(LEN=16),
INTENT(IN) :: VAR_NAME
2318 DOUBLE PRECISION,
INTENT(INOUT) :: RES_VALUE(n)
2319 INTEGER,
INTENT(OUT) :: IERR
2321 INTEGER(KIND=K8) :: MY_POS
2322 INTEGER :: SRF_ID, IVAR
2323 INTEGER :: I, ARRAY_SIZE, NTIMESTEP, IREC
2324 REAL(KIND=R4),
ALLOCATABLE :: TMP(:)
2325 INTEGER(KIND=K4) :: TAG
2327 CALL get_obj(
hash,file_id,srf_id,ierr)
2329 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2330 &
'GET_DATA_VALUE_SRF:GET_OBJ' 2336 IF((record.GE.ntimestep.OR.record.LT.0).AND.
2337 & ntimestep.GT.0)
THEN 2338 ierr = hermes_record_unknown_err
2339 error_message =
'ERROR IN '//
2341 &
'RECORD: '//i2char(record)//
' IS NOT WITHIN [0, '//
2342 & i2char(ntimestep-1)//
']' 2351 IF(
srf_obj_tab(srf_id)%VAR_LIST(i)(1:16).EQ.var_name)
THEN 2358 ierr = hermes_var_unknown_err
2359 error_message =
'ERROR IN '//
2361 &
'COULD NOT FIND YOUR VARIABLE: '//var_name
2367 ierr = hermes_wrong_size
2368 error_message =
'ERROR IN '//
2370 &
'WRONG SIZE FOR ARRAY IS: '//i2char(n)//
' SHOULD BE '//
2378 & + int(irec,k8)*(
srf_obj_tab(srf_id)%SIZE_DATA_SET)
2380 & + int(ivar-1,k8) *
srf_obj_tab(srf_id)%SIZE_DATA
2382 READ(file_id,pos=my_pos-4,iostat=ierr) tag
2384 ALLOCATE(tmp(n),stat=ierr)
2386 error_message =
'ERROR IN '//
2391 READ(file_id,iostat=ierr) (tmp(i),i=1,n)
2392 res_value = dble(tmp)
2395 READ(file_id,iostat=ierr) (res_value(i),i=1,n)
2398 error_message =
'ERROR IN '//
2400 &
'GET_DATA_VALUE_SRF:READ' 2403 READ(file_id,iostat=ierr) tag
2414 &(file_id,title,nvar,var_name,ierr)
2438 INTEGER,
INTENT(IN) :: FILE_ID
2439 CHARACTER(LEN=TITLE_SIZE),
INTENT(IN) :: TITLE
2440 INTEGER,
INTENT(IN) :: NVAR
2441 CHARACTER(LEN=VAR_SIZE),
INTENT(IN) :: VAR_NAME(nvar)
2442 INTEGER,
INTENT(OUT) :: IERR
2444 INTEGER(KIND=K8) :: MY_POS
2445 INTEGER :: TAG,I,SRF_ID
2446 INTEGER(KIND=K4) :: TMP, TMP2
2449 CALL get_obj(
hash,file_id,srf_id,ierr)
2451 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2452 &
'SET_HEADER_SRF:GET_OBJ' 2460 WRITE(file_id,pos=my_pos,iostat=ierr) tag,title,tag
2462 error_message =
'ERROR IN '//
2464 &
'SET_HEADER_SRF:WRITE:TITLE' 2474 WRITE(file_id,iostat=ierr) tag,tmp,tmp2,tag
2476 error_message =
'ERROR IN '//
2478 &
'SET_HEADER_SRF:WRITE' 2486 IF(.NOT.
ALLOCATED(
srf_obj_tab(srf_id)%VAR_LIST))
THEN 2487 ALLOCATE(
srf_obj_tab(srf_id)%VAR_LIST(nvar),stat=ierr)
2489 error_message =
'ERROR IN '//
2491 &
'ALLOCATING SET_HEADER:SRF_OBJ_TAB%VARLIST' 2495 ELSE IF(len(
srf_obj_tab(srf_id)%VAR_LIST).NE.nvar)
THEN 2497 ALLOCATE(
srf_obj_tab(srf_id)%VAR_LIST(nvar),stat=ierr)
2499 error_message =
'ERROR IN '//
2501 &
'ALLOCATING SET_HEADER:SRF_OBJ_TAB%VARLIST' 2507 WRITE(file_id,iostat=ierr) tag,var_name(i),tag
2509 error_message =
'ERROR IN '//
2511 &
'SET_HEADER_SRF:WRITE' 2534 INTEGER,
INTENT(IN) :: N,H,W
2536 nx = (mod((n-1),h)*w + (n-1)/h)+1
2558 INTEGER,
INTENT(INOUT) :: M(:)
2559 INTEGER,
INTENT(IN) :: H,W
2561 INTEGER INTEGER_SIZE,NUM_BYTES,BYTE_INDEX,BIT_INDEX
2562 INTEGER NUM_BITS, NUM_INTS
2563 INTEGER I,J,NX,START,TMP,TMP2
2564 INTEGER,
ALLOCATABLE :: MOVED(:)
2570 integer_size=bit_size(i)/8
2575 num_bytes=num_bits/8
2576 num_ints=num_bytes/integer_size
2579 ALLOCATE(moved(num_ints))
2584 byte_index=j/bit_size(i) +1
2585 bit_index=mod(j,bit_size(i))
2586 IF (btest(moved(byte_index), bit_index )) cycle
2597 byte_index=i/bit_size(i) +1
2598 bit_index=mod(i,bit_size(i))
2599 moved(byte_index)=ibset(moved(byte_index),bit_index)
2614 &(fformat,file_id,mesh_dim,typelt,ndp,nptfr,nptir,nelem,npoin,
2615 & ikle,ipobo,knolg,x,y,nplan,date,time,x_orig,y_orig,ierr,in_place)
2655 CHARACTER(LEN=8) ,
INTENT(IN) :: FFORMAT
2656 INTEGER ,
INTENT(IN) :: FILE_ID,NPLAN
2657 INTEGER,
DIMENSION(3),
INTENT(IN) :: DATE
2658 INTEGER,
DIMENSION(3),
INTENT(IN) :: TIME
2659 INTEGER,
INTENT(IN) :: MESH_DIM
2660 INTEGER,
INTENT(IN) :: TYPELT
2661 INTEGER,
INTENT(IN) :: NDP
2662 INTEGER,
INTENT(IN) :: NPTFR
2663 INTEGER,
INTENT(IN) :: NPTIR
2664 INTEGER,
INTENT(IN) :: NELEM
2665 INTEGER,
INTENT(IN) :: NPOIN
2666 INTEGER,
INTENT(INOUT) :: IKLE(ndp*nelem)
2667 INTEGER,
INTENT(IN) :: IPOBO(*)
2668 INTEGER,
INTENT(IN) :: KNOLG(*)
2669 DOUBLE PRECISION,
INTENT(IN) :: X(npoin),Y(npoin)
2670 INTEGER,
INTENT(IN) :: X_ORIG,Y_ORIG
2671 INTEGER,
INTENT(OUT) :: IERR
2672 LOGICAL,
OPTIONAL,
INTENT(IN) :: IN_PLACE
2674 INTEGER(KIND=K8) :: MY_POS
2675 INTEGER :: I,SRF_ID,IKLES_SIZE,IELEM,IPLAN
2677 INTEGER :: IELEMP,IELEMT,NPOIN2,IELEM2
2679 INTEGER(KIND=K4) :: TMP(10), TAG
2680 INTEGER(KIND=K4),
ALLOCATABLE :: IKLES(:)
2681 LOGICAL :: TRANSPOSE_IN_PLACE
2683 IF(
PRESENT(in_place))
THEN 2684 transpose_in_place=in_place
2686 transpose_in_place=.false.
2689 CALL get_obj(
hash,file_id,srf_id,ierr)
2691 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2692 &
'GET_MESH_SRF:GET_OBJ' 2697 IF(fformat.EQ.
'SERAFIND')
THEN 2706 CASE (triangle_elt_type)
2708 CASE (quadrangle_elt_type)
2710 CASE (prism_elt_type)
2712 CASE (split_prism_elt_type)
2715 ierr = unknown_elt_type_err
2716 error_message =
'ERROR IN '//
2718 &
'UNKNOWN ELEMENT TYPE: '//
2743 IF((date(1)+date(2)+date(3)+time(1)+time(2)+time(3)).NE.0)
THEN 2751 READ(file_id,pos=my_pos-4) tag
2753 WRITE(file_id,iostat=ierr) tag,tmp,tag
2755 error_message =
'ERROR IN '//
2757 &
'SET_MESH_SRF:WRITE:10 INTEGERS' 2762 IF(tmp(10).NE.0)
THEN 2767 WRITE(file_id,iostat=ierr) tag,date,time,tag
2769 error_message =
'ERROR IN '//
2771 &
'SET_MESH_SRF:WRITE:DATE' 2784 IF(typelt.EQ.50)
THEN 2795 WRITE(file_id,iostat=ierr) tag,tmp(1:4),tag
2797 error_message =
'ERROR IN '//
2799 &
'SET_MESH_SRF:WRITE:4 INTEGERS' 2809 IF(typelt.NE.50)
THEN 2814 ikles_size = nelem*2
2816 IF(.NOT. transpose_in_place)
THEN 2817 ALLOCATE(ikles(ikles_size),stat=ierr)
2819 error_message =
'ERROR IN '//
2821 &
'SET_MESH_SRF:IKLES' 2826 IF(typelt.NE.50)
THEN 2827 IF(.NOT. transpose_in_place)
THEN 2831 & ikle((i-1)*nelem+ielem)
2835 CALL igetmi(ikle,nelem,ndp)
2842 nelem2=nelem/3/(nplan-1)
2848 ielemp=(iplan-1)*nelem2+ielem2
2850 ielemt=(iplan-1)*nelem2*3+ielem2
2852 ikles((ielemp-1)*6+1) = ikle(ielemt)
2853 ikles((ielemp-1)*6+2) = ikle(nelem+ielemt)
2854 ikles((ielemp-1)*6+3) = ikle(2*nelem+ielemt)
2855 ikles((ielemp-1)*6+4) = ikle(ielemt)+npoin2
2856 ikles((ielemp-1)*6+5) = ikle(nelem+ielemt)+npoin2
2857 ikles((ielemp-1)*6+6) = ikle(2*nelem+ielemt)+npoin2
2863 IF(.NOT. transpose_in_place)
THEN 2864 WRITE(file_id,iostat=ierr)tag,ikles(1:ikles_size),tag
2866 WRITE(file_id,iostat=ierr)tag,ikle(1:ikles_size),tag
2869 error_message =
'ERROR IN '//
2871 &
'SET_MESH_SRF:WRITE:IKLES' 2879 IF(.NOT. transpose_in_place)
DEALLOCATE(ikles)
2886 WRITE(file_id,iostat=ierr) tag,ipobo(1:npoin),tag
2888 WRITE(file_id,iostat=ierr) tag,knolg(1:npoin),tag
2891 error_message =
'ERROR IN '//
2893 &
'SET_MESH_SRF:WRITE:IPOBO/KNOLG' 2905 WRITE(file_id,iostat=ierr) tag,(
REAL(X(I)),I=1,npoin),tag
2907 error_message =
'ERROR IN '//
2909 &
'SET_MESH_SRF:WRITE:X' 2913 WRITE(file_id,iostat=ierr) tag,(
REAL(Y(I)),I=1,npoin),tag
2915 error_message =
'ERROR IN '//
2917 &
'SET_MESH_SRF:WRITE:Y' 2922 WRITE(file_id,iostat=ierr) tag,(x(i),i=1,npoin),tag
2924 error_message =
'ERROR IN '//
2926 &
'SET_MESH_SRF:WRITE:X' 2929 WRITE(file_id,iostat=ierr) tag,(y(i),i=1,npoin),tag
2931 error_message =
'ERROR IN '//
2933 &
'SET_MESH_SRF:WRITE:Y' 2951 &(file_id,var_name,time,record,first_var,var_value,n,ierr)
2979 INTEGER,
INTENT(IN) :: FILE_ID,N
2980 CHARACTER(LEN=VAR_SIZE),
INTENT(IN) :: VAR_NAME
2981 DOUBLE PRECISION,
INTENT(IN) :: TIME
2982 INTEGER,
INTENT(IN) :: RECORD
2983 LOGICAL,
INTENT(IN) :: FIRST_VAR
2984 DOUBLE PRECISION,
INTENT(IN) :: VAR_VALUE(n)
2985 INTEGER,
INTENT(OUT) :: IERR
2987 INTEGER(KIND=K8) :: MY_POS
2988 INTEGER :: SRF_ID,I,IVAR, IREC
2989 INTEGER(KIND=K4) :: TAG
2991 CALL get_obj(
hash,file_id,srf_id,ierr)
2993 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
2994 &
'ADD_DATA_SRF:GET_OBJ' 3001 IF(
srf_obj_tab(srf_id)%VAR_LIST(i)(1:16).EQ.var_name(1:16))
3008 ierr = hermes_var_unknown_err
3009 error_message =
'ERROR IN '//
3011 &
'COULD NOT FIND YOUR VARIABLE: '//var_name
3016 ierr = hermes_record_unknown_err
3017 error_message =
'ERROR IN '//
3019 &
'RECORD: '//i2char(record)//
' IS LOWER THAN 0' 3025 & + int(irec,k8)*(
srf_obj_tab(srf_id)%SIZE_DATA_SET)
3026 READ(file_id,pos=my_pos-4,iostat=ierr) tag
3029 WRITE(file_id,iostat=ierr) tag,
REAL(TIME),TAG
3031 WRITE(file_id,iostat=ierr) tag,time,tag
3034 error_message =
'ERROR IN '//
3036 &
'ADD_DATA_SRF:WRITE:TIME' 3047 & + int(irec,k8)*(
srf_obj_tab(srf_id)%SIZE_DATA_SET)
3049 & + int(ivar-1,k8) *
srf_obj_tab(srf_id)%SIZE_DATA
3051 READ(file_id,pos=my_pos-4,iostat=ierr) tag
3058 WRITE(file_id,iostat=ierr) tag,(
REAL(VAR_VALUE(I)),I=1,n),tag
3060 error_message =
'ERROR IN '//
3062 &
'ADD_DATA_SRF:WRITE:VALUE' 3069 WRITE(file_id,iostat=ierr) tag,(var_value(i),i=1,n),tag
3071 error_message =
'ERROR IN '//
3073 &
'ADD_DATA_SRF:WRITE' 3084 &(file_id,type_bnd_elt,nelebd,ndp,ikle,
3086 & livbor,hbor,ubor,vbor,chbord,
3087 & litbor,tbor,atbor,btbor,color,ierr)
3122 INTEGER,
INTENT(IN) :: FILE_ID
3123 INTEGER,
INTENT(IN) :: TYPE_BND_ELT
3124 INTEGER,
INTENT(IN) :: NELEBD
3125 INTEGER,
INTENT(IN) :: NDP
3126 INTEGER,
INTENT(IN) :: IKLE(nelebd*ndp)
3127 INTEGER,
INTENT(IN) :: LIUBOR(nelebd),LIVBOR(nelebd)
3128 INTEGER,
INTENT(IN) :: LIHBOR(nelebd),LITBOR(nelebd)
3129 DOUBLE PRECISION,
INTENT(IN) :: UBOR(nelebd),VBOR(nelebd)
3130 DOUBLE PRECISION,
INTENT(IN) :: HBOR(nelebd),CHBORD(nelebd)
3131 DOUBLE PRECISION,
INTENT(IN) :: TBOR(nelebd),ATBOR(nelebd)
3132 DOUBLE PRECISION,
INTENT(IN) :: BTBOR(nelebd)
3133 INTEGER,
INTENT(IN) :: COLOR(nelebd)
3134 INTEGER,
INTENT(OUT) :: IERR
3136 INTEGER :: SRF_ID, I, NCLI
3138 CALL get_obj(
hash,file_id,srf_id,ierr)
3140 error_message =
'ERROR WITH ID '//i2char(file_id)//
': '//
3141 &
'SET_BND_SRF:GET_OBJ' 3150 IF(partel_concat)
THEN 3157 WRITE(ncli,4000,iostat=ierr) lihbor(i),liubor(i),livbor(i),
3158 & hbor(i),ubor(i),vbor(i),
3159 & chbord(i),litbor(i),
3160 & tbor(i),atbor(i),btbor(i),
3162 4000
FORMAT (1x,i2,1x,2(i1,1x),3(f24.12,1x),1x,
3163 & f24.12,3x,i1,1x,3(f24.12,1x),1i9,1x,1i9,
3164 & 1x,i10,1x,2(f27.15,1x),i8)
3166 error_message =
'ERROR IN '//
3168 &
'SET_BND_SRF:WRITE:NCLI' 3199 USE iso_fortran_env
, ONLY : input_unit,output_unit,error_unit
3200 INTEGER,
INTENT(IN) :: FILE_ID
3202 IF(file_id==input_unit.OR.file_id==output_unit
3203 & .OR.file_id==error_unit)
THEN 3206 INQUIRE(unit=file_id,opened=isopened)
subroutine get_bnd_npoin_srf(FILE_ID, TYPE_BND_ELEM, NPTFR, IERR)
subroutine close_mesh_srf(FILE_ID, IERR, MESH_NUMBER)
integer, parameter prism_elt_type
subroutine get_bnd_connectivity_srf(FILE_ID, TYP_BND_ELT, NELEBD, NDP, IKLE, IERR)
subroutine set_header_srf(FILE_ID, TITLE, NVAR, VAR_NAME, IERR)
subroutine identify_typ_elt(NDP, NDIM, TYP_ELT)
subroutine get_mesh_nplan_srf(FILE_ID, NPLAN, IERR)
subroutine get_bnd_numbering_srf(FILE_ID, TYP_ELEM_BND, NPTFR, NBOR, IERR)
subroutine get_bnd_color_srf(FILE_ID, TYP_BND_ELT, NELEBD, COLOR, IERR)
subroutine get_bnd_value_srf(FILE_ID, TYP_BND_ELEM, NPTFR, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, TRAC, LITBOR, TBOR, ATBOR, BTBOR, IERR)
YOANN AUDOUIN 10/05/2018 Initial version
integer, parameter title_size
subroutine get_mesh_dimension_srf(FILE_ID, NDIM, IERR)
integer, dimension(max_file) hash
integer, parameter var_size
integer, parameter triangle_elt_type
subroutine get_mesh_nelem_srf(FILE_ID, TYP_ELT, NELEM, IERR)
character(len=200) error_message
subroutine set_mesh_srf(FFORMAT, FILE_ID, MESH_DIM, TYPELT, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, IN_PLACE)
logical function isopened(FILE_ID)
subroutine get_mesh_nptir_srf(FILE_ID, NPTIR, IERR)
subroutine get_data_nvar_srf(FILE_ID, NVAR, IERR)
subroutine open_bnd_srf(FILE_NAME, FILE_ID, OPENMODE, IERR, MESH_NUMBER)
integer, parameter hermes_invalid_serafin_file
subroutine identify_endian_type(FILE_NAME, ENDIAN, FILE_ID, IERR)
subroutine get_mesh_coord_srf(FILE_ID, JDIM, NPOIN, COORD, IERR)
subroutine get_mesh_date_srf(FILE_ID, DATE, IERR)
subroutine get_data_var_list_srf(FILE_ID, NVAR, VAR_LIST, UNIT_LIST, IERR)
subroutine get_mesh_npoin_srf(FILE_ID, NPOIN, IERR)
subroutine igetmi(M, H, W)
integer, parameter max_file
subroutine add_data_srf(FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
subroutine get_mesh_l2g_numbering_srf(FILE_ID, KNOLG, NPOIN, IERR)
subroutine get_mesh_orig_srf(FILE_ID, X_ORIG, Y_ORIG, IERR)
subroutine get_mesh_connectivity_srf(FILE_ID, TYP_ELT, IKLE, NELEM, NDP, IERR)
subroutine close_bnd_srf(FILE_ID, IERR, MESH_NUMBER)
subroutine get_data_ntimestep_srf(FILE_ID, NTIMESTEP, IERR)
integer, parameter tetrahedron_elt_type
integer, parameter quadrangle_elt_type
subroutine get_mesh_title_srf(FILE_ID, TITLE, IERR)
subroutine get_data_time_srf(FILE_ID, RECORD, TIME, IERR)
subroutine get_data_value_srf(FILE_ID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
subroutine open_index(FILENAME, FILE_ID)
subroutine open_mesh_srf(FILE_NAME, FILE_ID, OPENMODE, FFORMAT, IERR, MESH_NUMBER)
subroutine get_bnd_ipobo_srf(FILE_ID, NPOIN, IPOBO, IERR)
subroutine get_bnd_nelem_srf(FILE_ID, TYPE_BND_ELEM, NELEM, IERR)
subroutine get_mesh_npoin_per_element_srf(FILE_ID, TYP_ELT, NDP, IERR)
type(srf_info), dimension(max_file) srf_obj_tab
pure integer function compute_next(N, H, W)
subroutine set_bnd_srf(FILE_ID, TYPE_BND_ELT, NELEBD, NDP, IKLE, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, LITBOR, TBOR, ATBOR, BTBOR, COLOR, IERR)