34 #if defined (HAVE_MED) 37 INTEGER,
PARAMETER ::
kid=
k8 42 INTEGER(KIND=KID) :: id
43 CHARACTER(LEN=250) :: file_name
45 INTEGER,
ALLOCATABLE :: nbor(:)
47 INTEGER,
ALLOCATABLE :: nbor_seg(:)
49 INTEGER,
ALLOCATABLE :: pt2seg(:,:)
51 LOGICAL,
ALLOCATABLE :: is_bnd(:)
54 INTEGER :: nbnd_grp, nbnd_used_grp
56 INTEGER,
ALLOCATABLE :: bnd_grp_val(:,:)
59 INTEGER,
ALLOCATABLE :: bnd_fam(:,:)
61 CHARACTER(LEN=MED_NAME_SIZE) :: mesh_name
63 CHARACTER(LEN=MED_LNAME_SIZE),
ALLOCATABLE :: bnd_grp_name(:)
67 INTEGER :: mesh_number
68 CHARACTER(LEN=50) :: mesh_number_str
71 INTEGER :: cli_line_begin
82 INTEGER,
PARAMETER ::
sol_bnd = 2
84 INTEGER,
PARAMETER ::
offset = 1000
108 CHARACTER(LEN=*),
INTENT(IN) :: FILE_NAME
109 INTEGER,
INTENT(OUT) :: FILE_ID
110 CHARACTER(LEN=9),
INTENT(IN) :: OPEN_MODE
111 INTEGER,
INTENT(OUT) :: IERR
112 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
114 #if defined (HAVE_MED) 115 LOGICAL :: HDFOK, MEDOK
117 INTEGER :: MAJOR, MINOR, REL
119 INTEGER(KIND=KID) :: FID
120 CHARACTER(LEN=200) :: CFILE_NAME
121 CHARACTER(LEN=MED_NAME_SIZE) :: TITLE_MED
122 CHARACTER(LEN=MED_SNAME_SIZE) :: DT_UNIT
123 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_NAME(:)
124 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_UNIT(:)
125 CHARACTER(LEN=MED_COMMENT_SIZE) :: COMMENT
129 INTEGER :: NB_DIM_MESH
140 SELECT CASE(open_mode)
142 med_mode = med_acc_rdonly
144 med_mode = med_acc_rdwr
147 med_mode = med_acc_rdwr
149 med_mode = med_acc_creat
155 & trim(file_name)//
': '//
159 cfile_name = trim(file_name)//char(0)
163 IF(med_mode.EQ.med_acc_rdonly)
THEN 165 CALL mficom(cfile_name, hdfok, medok, ierr)
168 & trim(file_name)//
': '//
169 &
'OPEN_MESH_MED:MFICOM' 175 IF (.NOT. hdfok)
THEN 178 & trim(file_name)//
': '//
182 IF (.NOT. medok)
THEN 185 & trim(file_name)//
': '//
191 CALL mfiope(fid, cfile_name, med_mode, ierr)
194 & trim(file_name)//
': '//
195 &
'OPEN_MESH_MED:MFIOPE' 198 file_id = maxval(
hash) + 100
204 &
'OPEN_MESH_MED:ADD_OBJ' 211 IF(med_mode.EQ.med_acc_rdonly)
THEN 213 CALL mfinvr (fid, major, minor, rel, ierr)
217 &
'OPEN_MESH_MED:MFINVR' 231 WRITE(
med_obj_tab(med_id)%MESH_NUMBER_STR,
'(I0)')mesh_number
238 IF(med_mode.EQ.med_acc_rdonly.OR.
243 CALL mmhnax(fid,imesh,naxis,ierr)
247 &
'OPEN_MESH_MED:MMHMII' 250 ALLOCATE(coor_name(naxis),stat=ierr)
254 &
'ALLOCATING OPEN_MESH_MED:COOR_NAME' 257 ALLOCATE(coor_unit(naxis),stat=ierr)
261 &
'ALLOCATING OPEN_MESH_MED:COOR_UNIT' 266 CALL mmhmii(fid,imesh,title_med,nb_dim_pb,nb_dim_mesh,
267 & mesh_type,comment,dt_unit,order,ncomp,coor_type,coor_name,
272 &
'OPEN_MESH_MED:MMHMII' 275 DEALLOCATE(coor_name)
276 DEALLOCATE(coor_unit)
305 INTEGER,
INTENT(IN) :: FILE_ID
306 INTEGER,
INTENT(OUT) :: IERR
309 INTEGER(KIND=KID) :: FID
313 #if defined (HAVE_MED) 318 &
'CLOSE_MESH_MED:GET_OBJ' 327 CALL mficlo(fid, ierr)
331 &
'CLOSE_MESH_MED:MFICLO' 341 med_obj_tab(med_id)%MESH_NAME = repeat(
' ',med_name_size)
342 IF(
ALLOCATED(
med_obj_tab(med_id)%BND_GRP_VAL))
THEN 345 IF(
ALLOCATED(
med_obj_tab(med_id)%BND_GRP_NAME))
THEN 383 SUBROUTINE open_bnd_med(FILE_NAME,FILE_ID,OPEN_MODE,IERR,
400 CHARACTER(LEN=*),
INTENT(IN) :: FILE_NAME
401 INTEGER,
INTENT(IN) :: FILE_ID
402 CHARACTER(LEN=9),
INTENT(IN) :: OPEN_MODE
403 INTEGER,
INTENT(OUT) :: IERR
404 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
406 #if defined (HAVE_MED) 407 INTEGER :: MED_ID,NCLI,NBND_GRP,I,DUMMY
409 CHARACTER(LEN=9) :: REAL_OPENMODE
416 & trim(file_name)//
': '//
417 &
'OPEN_MED_BND:GET_OBJ' 421 real_openmode=open_mode
427 IF(open_mode(1:5)==
'WRITE')
THEN 428 real_openmode=
'READWRITE' 432 & open_mode,mesh_number,
439 INQUIRE(file=file_name,opened=isopened)
442 INQUIRE(file=file_name,number=
med_obj_tab(med_id)%NCLI)
447 & form=
'FORMATTED',action=real_openmode,iostat=ierr)
449 IF(open_mode(1:4).EQ.
'READ')
THEN 461 READ(unit=ncli,fmt=*,iostat=ierr) nbnd_grp
465 &
'OPEN_BND_MED:READ' 469 ALLOCATE(
med_obj_tab(med_id)%BND_GRP_VAL(nbnd_grp,4),
474 &
'ALLOCATING BND_GRP_VAL' 477 ALLOCATE(
med_obj_tab(med_id)%BND_GRP_NAME(nbnd_grp),stat=ierr)
481 &
'ALLOCATING BND_GRP_NAME' 485 READ(unit=ncli,fmt=*,iostat=ierr)
494 &
'OPEN_BND_MED:READ' 529 INTEGER,
INTENT(IN) :: FILE_ID
530 INTEGER,
INTENT(OUT) :: IERR
531 INTEGER,
OPTIONAL,
INTENT(IN) :: MESH_NUMBER
533 INTEGER MED_ID, LINE_BEGIN, LINE_END
541 &
'CLOSE_BND_MED:GET_OBJ' 548 INQUIRE(unit=
med_obj_tab(med_id)%NCLI,opened=isopened)
555 line_end =
med_obj_tab(med_id)%NBND_USED_GRP+1+ line_begin
558 & mesh_number, line_begin, line_end)
566 &
'CLOSE_BND_MED:CLOSE' 587 INTEGER,
INTENT(IN) :: FILE_ID
588 CHARACTER(LEN=80),
INTENT(OUT) :: TITLE
589 INTEGER,
INTENT(OUT) :: IERR
591 #if defined (HAVE_MED) 594 CHARACTER(LEN=MED_COMMENT_SIZE) :: TITLE_MED
595 INTEGER(KIND=KID) :: FID
603 &
'GET_MESH_TITLE_MED:GET_OBJ' 606 title_med = repeat(
' ',med_comment_size)
609 CALL mficor(fid,title_med,ierr)
614 title = title_med(1:80)
619 title = repeat(
' ', 80)
643 INTEGER,
INTENT(IN) :: FILE_ID
644 INTEGER,
INTENT(IN) :: TYPE_ELEM
645 INTEGER,
INTENT(OUT) :: NELEM
646 INTEGER,
INTENT(OUT) :: IERR
648 #if defined (HAVE_MED) 649 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
651 INTEGER :: TYPE_ELEM_MED
654 INTEGER(KIND=KID) :: FID
662 &
'GET_MESH_NELEM_MED:GET_OBJ' 673 &
'GET_MESH_NELEM_MED:CONVERT_ELEM_TYPE' 679 CALL mmhnme(fid,mname,med_no_dt,med_no_it,med_cell,
680 & type_elem_med,med_connectivity,med_nodal,chgt,tsf,nelem,ierr)
684 &
'GET_MESH_NELEM_MED:MMHNME' 713 INTEGER,
INTENT(IN) :: TYPE_ELEM
714 INTEGER,
INTENT(OUT) :: NDP
715 INTEGER,
INTENT(OUT) :: IERR
717 #if defined (HAVE_MED) 719 INTEGER :: TYPE_ELEM_MED
760 INTEGER,
INTENT(IN) :: FILE_ID
761 INTEGER,
INTENT(IN) :: TYPE_ELEM
762 INTEGER,
INTENT(IN) :: NELEM
763 INTEGER,
INTENT(IN) :: NDP
764 INTEGER,
INTENT(INOUT) :: IKLE(nelem*ndp)
765 INTEGER,
INTENT(OUT) :: IERR
767 #if defined (HAVE_MED) 768 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
770 INTEGER :: MED_ID, TYPE_ELEM_MED
771 INTEGER(KIND=KID) :: FID
779 &
'GET_MESH_CONNECTIVITY_MED:GET_OBJ' 790 &
'GET_MESH_CONNECTIVITY_MED:CONVERT_ELEM_TYPE' 795 CALL mmhcyr(fid,mname,med_no_dt,med_no_it,med_cell,
796 & type_elem_med,med_nodal,med_full_interlace,ikle,ierr)
800 &
'GET_MESH_CONNECTIVITY_MED:MMHCYR' 829 INTEGER,
INTENT(IN) :: FILE_ID
830 INTEGER,
INTENT(IN) :: TYPE_ELEM
831 INTEGER,
INTENT(OUT) :: NPOIN
832 INTEGER,
INTENT(OUT) :: IERR
834 #if defined (HAVE_MED) 835 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
838 INTEGER :: MED_ID, TYPE_ELEM_MED
839 INTEGER(KIND=KID) :: FID
847 &
'GET_MESH_NPOIN_MED:GET_OBJ' 858 &
'GET_MESH_NPOIN_MED:CONVERT_ELEM_TYPE' 863 CALL mmhnme(fid,mname,med_no_dt,med_no_it,med_node,
864 & type_elem_med,med_coordinate,med_nodal,chgt,tsf,npoin,ierr)
868 &
'GET_MESH_NPOIN_MED:MMHNME' 897 INTEGER,
INTENT(IN) :: FILE_ID
898 INTEGER,
INTENT(OUT) :: NDIM
899 INTEGER,
INTENT(OUT) :: IERR
901 #if defined (HAVE_MED) 902 CHARACTER(LEN=MED_NAME_SIZE) :: TITLE_MED
903 CHARACTER(LEN=MED_NAME_SIZE) :: DT_UNIT
904 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_NAME(:)
905 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_UNIT(:)
906 CHARACTER(LEN=MED_COMMENT_SIZE) :: COMMENT
916 INTEGER(KIND=KID) :: FID
923 &
'GET_MESH_DIMENSION:GET_MESH_OBJ_FILE' 929 CALL mmhnax(fid,imesh,naxis,ierr)
933 &
'GET_MESH_DIMENSION_MED:MMHNAX' 936 ALLOCATE(coor_name(naxis),stat=ierr)
940 &
'ALLOCATING GET_MESH_DIMENSION_MED:COOR_NAME' 943 ALLOCATE(coor_unit(naxis),stat=ierr)
947 &
'ALLOCATING GET_MESH_DIMENSION_MED:COOR_UNIT' 952 CALL mmhmii(fid,imesh,title_med,nb_dim_pb,ndim,mesh_type,
953 & comment,dt_unit,order,ncomp,coor_type,coor_name,coor_unit,ierr)
957 &
'GET_MESH_DIMENSION_MED:MMHMII' 960 DEALLOCATE(coor_name)
961 DEALLOCATE(coor_unit)
992 INTEGER,
INTENT(IN) :: FILE_ID, JDIM, NDIM, NPOIN
993 INTEGER,
INTENT(OUT) :: IERR
994 DOUBLE PRECISION,
INTENT(INOUT) :: COORD_AXE(npoin)
996 #if defined (HAVE_MED) 997 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
1000 DOUBLE PRECISION,
ALLOCATABLE :: COORD(:)
1001 INTEGER(KIND=KID) :: FID
1009 &
'COORD_MED:GET_MESH_OBJ_FILE' 1016 ALLOCATE(coord(3*npoin),stat=ierr)
1020 &
'ALLOCATING GET_MESH_COORD_MED:COORD' 1025 CALL mmhcor(fid,mname,med_no_dt,med_no_it,med_no_interlace,
1030 &
'GET_MESH_COORD_MED:MMHCOR' 1035 IF ((jdim.GE.0).AND.(jdim.LE.ndim))
THEN 1036 coord_axe(1:npoin)=coord((jdim-1)*npoin+1:jdim*npoin)
1069 INTEGER,
INTENT(IN) :: FILE_ID
1070 INTEGER,
INTENT(IN) :: NPOIN
1071 INTEGER,
INTENT(OUT) :: IERR
1072 INTEGER,
INTENT(INOUT) :: KNOLG(npoin)
1074 #if defined (HAVE_MED) 1075 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
1078 INTEGER(KIND=KID) :: FID
1086 &
'GET_MESH_L2G_NUMBERING_MED:GET_OBJ' 1093 CALL mmhgnr(fid,mname,med_no_dt,med_no_it,med_node,med_none,
1098 &
'GET_MESH_L2G_NUMBERING_MED:MMHGNR' 1127 INTEGER,
INTENT(IN) :: FILE_ID
1128 INTEGER,
INTENT(OUT) :: NPTIR
1129 INTEGER,
INTENT(OUT) :: IERR
1131 #if defined (HAVE_MED) 1133 CHARACTER(LEN=MED_NAME_SIZE) :: PNAME
1134 INTEGER :: NSTEP,ITYP,NPARAM,I
1135 CHARACTER(LEN=MED_NAME_SIZE) :: DTUNIT
1136 CHARACTER(LEN=MED_COMMENT_SIZE) :: DESC
1138 CHARACTER(LEN=MED_NAME_SIZE) :: NPTIR_NAME
1139 INTEGER(KIND=KID) :: FID
1147 &
'GET_MESH_NPTIR_MED:GET_OBJ' 1156 nptir_name=
'NPTIR'//trim(
med_obj_tab(med_id)%MESH_NUMBER_STR)
1158 CALL mprnpr(fid,nparam,ierr)
1162 &
'GET_MESH_NPTIR_MED:MPRNPR' 1167 CALL mprpri(fid,i,pname,ityp,desc,dtunit,nstep,ierr)
1171 &
'GET_MESH_NPTIR_MED:MPRNPR' 1174 IF(trim(pname).EQ.trim(nptir_name))
THEN 1180 CALL mprivr(fid,pname,med_no_dt,med_no_it,nptir,ierr)
1184 &
'GET_MESH_NPTIR_MED:MPRIVR' 1217 INTEGER,
INTENT(IN) :: FILE_ID
1218 INTEGER,
INTENT(OUT) :: X_ORIG, Y_ORIG
1219 INTEGER,
INTENT(OUT) :: IERR
1221 #if defined (HAVE_MED) 1222 INTEGER :: MED_ID,NSTEP,ITYP,NPARAM,I
1223 CHARACTER(LEN=MED_NAME_SIZE) :: PNAME,DTUNIT
1224 CHARACTER(LEN=MED_COMMENT_SIZE) :: DESC
1226 INTEGER(KIND=KID) :: FID
1234 &
'GET_MESH_ORIG_MED:GET_OBJ' 1241 CALL mprnpr(fid,nparam,ierr)
1245 &
'GET_MESH_ORIG_MED:MPRNPR' 1250 CALL mprpri(fid,i,pname,ityp,desc,dtunit,nstep,ierr)
1254 &
'GET_MESH_ORIG_MED:MPRNPR' 1257 IF(pname(1:5).EQ.
'X_ORIG')
THEN 1262 pname =
'X_ORIG'//char(0)
1263 CALL mprivr(fid,pname,med_no_dt,med_no_it,x_orig,ierr)
1267 &
'GET_MESH_ORIG_MED:MPRIVR' 1270 pname =
'Y_ORIG'//char(0)
1271 CALL mprivr(fid,pname,med_no_dt,med_no_it,y_orig,ierr)
1275 &
'GET_MESH_ORIG_MED:MPRIVR' 1309 INTEGER,
INTENT(IN) :: FILE_ID
1310 INTEGER,
INTENT(OUT) :: NPLAN
1311 INTEGER,
INTENT(OUT) :: IERR
1313 #if defined (HAVE_MED) 1314 INTEGER :: MED_ID,NSTEP,ITYP,NPARAM,I
1315 CHARACTER(LEN=MED_NAME_SIZE) :: PNAME,DTUNIT
1316 CHARACTER(LEN=MED_COMMENT_SIZE) :: DESC
1318 INTEGER(KIND=KID) :: FID
1326 &
'GET_MESH_NPLAN_MED:GET_OBJ' 1334 CALL mprnpr(fid,nparam,ierr)
1338 &
'GET_MESH_NPLAN_MED:MPRNPR' 1343 CALL mprpri(fid,i,pname,ityp,desc,dtunit,nstep,ierr)
1347 &
'GET_MESH_NPLAN_MED:MPRNPR' 1350 IF(pname(1:5).EQ.
'NPLAN')
THEN 1355 pname =
'NPLAN'//char(0)
1356 CALL mprivr(fid,pname,med_no_dt,med_no_it,nplan,ierr)
1360 &
'GET_MESH_NPLAN_MED:MPRIVR' 1392 INTEGER,
INTENT(IN) :: FILE_ID
1393 INTEGER,
INTENT(OUT) :: DATE(6)
1394 INTEGER,
INTENT(OUT) :: IERR
1396 #if defined (HAVE_MED) 1397 INTEGER :: MED_ID,NSTEP,ITYP,NPARAM,I
1398 CHARACTER(LEN=MED_NAME_SIZE) :: PNAME,DTUNIT
1399 CHARACTER(LEN=MED_COMMENT_SIZE) :: DESC
1402 INTEGER(KIND=KID) :: FID
1410 &
'GET_MESH_NPLAN_MED:GET_OBJ' 1417 CALL mprnpr(fid,nparam,ierr)
1421 &
'GET_MESH_NPLAN_MED:MPRNPR' 1426 CALL mprpri(fid,i,pname,ityp,desc,dtunit,nstep,ierr)
1430 &
'GET_MESH_NPLAN_MED:MPRNPR' 1433 IF(pname(1:5).EQ.
'DATE')
THEN 1438 pname =
'DATE'//char(0)
1439 CALL mprivr(fid,pname,med_no_dt,med_no_it,mydate,ierr)
1443 &
'GET_MESH_NPLAN_MED:MPRIVR' 1446 date(1) = mydate/10000
1447 mydate = mydate - date(1)*10000
1448 date(2) = mydate/100
1449 mydate = mydate - date(2)*100
1451 pname =
'TIME'//char(0)
1452 CALL mprivr(fid,pname,med_no_dt,med_no_it,mydate,ierr)
1456 &
'GET_MESH_NPLAN_MED:MPRIVR' 1459 date(4) = mydate/10000
1460 mydate = mydate - date(4)*10000
1461 date(5) = mydate/100
1462 mydate = mydate - date(5)*100
1498 INTEGER,
INTENT(IN) :: FILE_ID, TYPE_ELEM_BND, NPOIN
1499 INTEGER,
INTENT(INOUT) :: IPOBO(npoin)
1500 INTEGER,
INTENT(OUT) :: IERR
1502 #if defined (HAVE_MED) 1504 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
1506 INTEGER :: I,J, MED_ID
1507 INTEGER :: NDP_BND_ELE
1508 INTEGER :: TYPE_ELEM_MED
1509 INTEGER,
ALLOCATABLE :: BND_IKLE(:)
1510 INTEGER,
ALLOCATABLE :: NBOR(:)
1513 INTEGER(KIND=KID) :: FID
1526 &
'GET_BND_IPOBO_MED:GET_OBJ' 1541 &
'GET_BND_IPOBO_MED:CONVERT_ELEM_TYPE' 1550 &
'GET_BND_IPOBO_MED:IDENTIFY_BND_ELMT' 1559 &
'GET_BND_IPOBO_MED:NDP_FROM_ELT_TYPE_MED' 1568 &
'GET_BND_IPOBO_MED:GET_MESH_NELEM_MED' 1578 &
'GET_BND_IPOBO_MED:GET_BND_NPOIN' 1581 ALLOCATE(nbor(nptfr),stat=ierr)
1594 &
'GET_BND_IPOBO_MED:GET_BND_NPOIN' 1603 ALLOCATE(bnd_ikle(ndp_bnd_ele*nelem),stat=ierr)
1607 &
'ALLOCATING GET_BND_IPOBO_MED:BND_IKLE' 1611 CALL mmhcyr(fid,mname,med_no_dt,med_no_it,med_cell,
1612 & type_elem_med,med_nodal,med_no_interlace,bnd_ikle,ierr)
1616 &
'GET_BND_IPOBO_MED:MMHCYR' 1624 ipobo(bnd_ikle((j-1)*nelem+i)) = 1
1629 DEALLOCATE(bnd_ikle)
1658 INTEGER,
INTENT(IN) :: FILE_ID,NPTFR,TYPE_ELEM_BND
1659 INTEGER,
INTENT(INOUT) :: NBOR(nptfr)
1660 INTEGER,
INTENT(OUT) :: IERR
1662 #if defined HAVE_MED 1664 INTEGER :: NELEBD,NDP,I,J
1665 INTEGER :: MED_ID,TYPE_ELEM_MED
1666 INTEGER,
ALLOCATABLE :: IKLE(:)
1667 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
1669 INTEGER :: ISUIV, NOEUD1, NOEUD2
1670 INTEGER :: IILE,NILE,NPOIN,NELEM
1671 INTEGER,
ALLOCATABLE :: TRAV1(:,:)
1672 INTEGER,
ALLOCATABLE :: KP1BOR(:)
1673 DOUBLE PRECISION :: SOM1,SOM2,Y2
1674 DOUBLE PRECISION,
PARAMETER :: EPSILO = 1.d-6
1675 DOUBLE PRECISION,
ALLOCATABLE :: X(:),Y(:)
1677 INTEGER(KIND=KID) :: FID
1685 &
'GET_BND_NUMBERING_MED:GET_OBJ' 1698 CALL mmhcyr(fid,mname,med_no_dt,med_no_it,med_cell,
1699 & med_point1,med_nodal,med_no_interlace,nbor,ierr)
1703 &
'GET_BND_CONNECTIVITY_MED:MMHCYR' 1721 &
'GET_BND_NUMBERING_MED:CONVERT_ELEM_TYPE' 1730 &
'GET_BND_IPOBO_MED:IDENTIFY_BND_ELMT' 1739 &
'GET_BND_NUMBERING_MED:NDP_FROM_ELT_TYPE_MED' 1748 &
'GET_BND_NUMBERING_MED:GET_MESH_NELEM_MED' 1753 ALLOCATE(ikle(ndp*nelem),stat=ierr)
1757 &
'ALLOCATING GET_BND_NUMBERING_MED:BND_IKLE' 1761 CALL mmhcyr(fid,mname,med_no_dt,med_no_it,med_cell,
1762 & type_elem_med,med_nodal,med_no_interlace,ikle,ierr)
1766 &
'GET_BND_NUMBERING_MED:MMHCYR' 1775 &
'GET_BND_NUMBERING_MED:GET_MESH_COORD_MED:X' 1779 ALLOCATE(trav1(nptfr,2),stat=ierr)
1783 &
'ALLOCATING GET_BND_NUMBERING_MED:TRAV1' 1787 ALLOCATE(kp1bor(nptfr*2),stat=ierr)
1791 &
'ALLOCATING GET_BND_NUMBERING_MED:KP1BOR' 1795 ALLOCATE(
med_obj_tab(med_id)%PT2SEG(nptfr,2),stat=ierr)
1799 &
'ALLOCATING GET_BND_NUMBERING_MED:PT2SEG' 1809 trav1(nelebd,1) = ikle(i)
1810 trav1(nelebd,2) = ikle(i+nelem)
1823 ALLOCATE(x(npoin),stat=ierr)
1827 &
'ALLOCATING GET_BND_NUMBERING_MED:X' 1830 ALLOCATE(y(npoin),stat=ierr)
1834 &
'ALLOCATING GET_BND_NUMBERING_MED:Y' 1841 &
'GET_BND_NUMBERING_MED:GET_MESH_COORD_MED:X' 1848 &
'GET_BND_NUMBERING_MED:GET_MESH_COORD_MED:Y' 1860 som1 = x(trav1(i,1)) + y(trav1(i,1))
1861 IF (abs(som1-som2).LE.abs(epsilo*som1))
THEN 1862 IF (y(trav1(i,1)).LE.y2)
THEN 1867 ELSEIF (som1.LE.som2)
THEN 1875 noeud1 = trav1(isuiv,1)
1876 noeud2 = trav1(isuiv,2)
1877 trav1(isuiv,1) = trav1(1,1)
1878 trav1(isuiv,2) = trav1(1,2)
1898 IF (trav1(isuiv,1).EQ.trav1(i-1,2))
THEN 1901 noeud1 = trav1(isuiv,1)
1902 noeud2 = trav1(isuiv,2)
1903 trav1(isuiv,1) = trav1(i,1)
1904 trav1(isuiv,2) = trav1(i,2)
1911 kp1bor(i+nptfr) = i-1
1922 IF (trav1(isuiv,2).EQ.trav1(i-1,2))
THEN 1925 noeud1 = trav1(isuiv,2)
1926 noeud2 = trav1(isuiv,1)
1927 trav1(isuiv,1) = trav1(i,1)
1928 trav1(isuiv,2) = trav1(i,2)
1935 kp1bor(i+nptfr) = i-1
1951 IF (trav1(nile,1).NE.trav1(i-1,2))
THEN 1955 4500
FORMAT(1x,
'ERROR IN THE EDGE SEGMENTS MISSING SEGMENT',/,
1956 & 1x,
'FOR THE NODE ',i5)
1961 kp1bor(nile+nptfr) = i-1
1973 IF (trav1(nile,1).NE.trav1(nptfr,2))
THEN 1975 5000
FORMAT(1x,
'ERROR, THE BOUNDARY IS NOT CLOSED :',/,
1976 & 1x,
'FIRST POINT :',i5,2x,
'LAST POINT : ',i5)
1981 kp1bor(nile+nptfr) = nptfr
1982 kp1bor(nptfr) = nile
1992 nbor(i ) = trav1(i,1)
2026 INTEGER,
INTENT(IN) :: FILE_ID
2027 INTEGER,
INTENT(IN) :: TYPE_ELEM
2028 INTEGER,
INTENT(OUT) :: BND_NELEM
2029 INTEGER,
INTENT(OUT) :: IERR
2031 #if defined (HAVE_MED) 2032 INTEGER :: MED_ID, TYPE_ELEM_MED
2037 CALL get_obj(
hash,file_id,med_id,ierr)
2040 &
'GET_BND_NELEM_MED:MMHCYR' 2049 &
'GET_BND_NELEM_MED:CONVERT_ELEM_TYPE' 2058 &
'GET_BND_NELEM_MED:IDENTIFY_BND_ELMT' 2085 & NDP, BND_IKLE, IERR)
2101 INTEGER,
INTENT(IN) :: FILE_ID
2102 INTEGER,
INTENT(IN) :: NELEBD
2103 INTEGER,
INTENT(IN) :: NDP
2104 INTEGER,
INTENT(IN) :: TYPE_ELEM
2105 INTEGER,
INTENT(INOUT) :: BND_IKLE(nelebd*ndp)
2106 INTEGER,
INTENT(OUT) :: IERR
2108 #if defined (HAVE_MED) 2109 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
2111 INTEGER :: TYPE_ELEM_MED,MED_ID
2112 INTEGER,
ALLOCATABLE :: IKLE(:)
2113 INTEGER :: IBND,NELEM,I
2114 INTEGER(KIND=KID) ::FID
2119 CALL get_obj(
hash,file_id,med_id,ierr)
2122 &
'GET_BND_CONNECTIVITY_MED:GET_OBJ' 2134 &
'GET_BND_CONNECTIVITY_MED:CONVERT' 2143 &
'GET_BND_CONNECTIVITY_MED:IDENTIFY_BND_ELMT' 2156 &
'GET_BND_CONNECTIVITY_MED:GET_MESH_NELEM' 2160 ALLOCATE(ikle(nelem*ndp),stat=ierr)
2164 &
'ALLOCATING GET_BND_CONNECTIVITY_MED:IKLE' 2168 CALL mmhcyr(fid,mname,med_no_dt,med_no_it,med_cell,
2169 & type_elem_med,med_nodal,med_no_interlace,ikle,ierr)
2173 &
'GET_BND_CONNECTIVITY_MED:MMHCYR' 2183 bnd_ikle(ibnd) = ikle(i)
2184 bnd_ikle(ibnd+nelebd) = ikle(i+nelem)
2219 INTEGER,
INTENT(IN) :: FILE_ID
2220 CHARACTER(LEN=16),
INTENT(IN) :: GRP_NAME
2221 INTEGER,
INTENT(INOUT) :: VALUE
2222 INTEGER,
INTENT(OUT) :: IERR
2224 INTEGER :: NCLI,MED_ID,I1,I2,I3,I4,I
2226 CHARACTER(LEN=16) :: TEMP_NAME
2232 CALL get_obj(
hash,file_id,med_id,ierr)
2235 &
'GET_BND_GRP_VALUE_MED:MMHCYR' 2250 READ(unit=ncli,fmt=*,iostat=ierr) ngroup
2254 &
'GET_BND_GRP_VALUE:READ' 2258 READ(unit=ncli,fmt=*,iostat=ierr) i1,i2,i3,i4,temp_name
2262 &
'GET_BND_GRP_VALUE:READ' 2267 IF (temp_name .EQ. grp_name)
THEN 2269 VALUE = i1*1000+i2*100+i3*10+i4
2296 INTEGER,
INTENT(IN) :: FILE_ID, TYPE_BND_ELEM, NELEBD
2297 INTEGER,
DIMENSION(NELEBD),
INTENT(INOUT) :: FAMILY
2298 INTEGER,
INTENT(OUT) :: IERR
2300 #if defined (HAVE_MED) 2301 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
2303 INTEGER :: IELEM, IGRP
2304 INTEGER :: MED_ID, TYPE_ELEM_MED, NB_FAMILY
2305 INTEGER,
DIMENSION(:),
ALLOCATABLE :: NUM_FAMILY
2306 INTEGER :: NELEM, IBND
2307 INTEGER(KIND=KID) :: FID
2312 CALL get_obj(
hash,file_id,med_id,ierr)
2315 &
'GET_BND_FAMILY_MED:GET_OBJ_FILE' 2326 &
'GET_BND_FAMILY_MED:CONVERT_ELEM_TYPE' 2335 &
'GET_BND_FAMILY_MED:IDENTIFY_BND_ELMT' 2345 &
'GET_BND_FAMILY_MED:GET_MESH_NELEM' 2354 &
'GET_BND_FAMILY_MED:GET_MESH_NELEM' 2360 ALLOCATE(num_family(nelem),stat=ierr)
2364 &
'ALLOCATING NUM_FAMILY' 2368 CALL mmhfnr(fid,mname,med_no_dt,med_no_it,med_cell,
2369 & type_elem_med,num_family,ierr)
2373 &
'GET_BND_FAMILY_MED:MMHFNR' 2378 CALL mfanfa(fid,mname,nb_family,ierr)
2382 &
'GET_BND_FAMILY_MED:MFANFA' 2392 DO igrp = 1, nb_family
2394 IF(
med_obj_tab(med_id)%BND_FAM(igrp,2).EQ.0) cycle
2395 IF (num_family(ielem).EQ.
2397 family(ibnd) =
med_obj_tab(med_id)%BND_FAM(igrp,2)
2403 DEALLOCATE(num_family)
2433 INTEGER,
INTENT(IN) :: FILE_ID, TYPE_BND_ELEM
2434 INTEGER,
INTENT(OUT) :: NPTFR
2435 INTEGER,
INTENT(OUT) :: IERR
2437 #if defined (HAVE_MED) 2438 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
2441 INTEGER :: MED_ID, TYPE_BND_ELEM_MED
2442 INTEGER :: NELEBD, NPOIN, I, J, NDP
2443 INTEGER,
ALLOCATABLE :: IKLE(:)
2444 LOGICAL,
ALLOCATABLE :: IS_BND(:)
2445 INTEGER(KIND=KID) :: FID
2450 CALL get_obj(
hash,file_id,med_id,ierr)
2453 &
'GET_BND_NPOIN_MED:GET_OBJ' 2464 &
'GET_BND_NPOIN_MED:CONVERT_ELEM_TYPE' 2474 &
'GET_BND_NPOIN_MED:GET_BND_NELEM_MED' 2483 IF(nelebd.GT.0)
THEN 2486 CALL mmhnme(fid,mname,med_no_dt,med_no_it,med_node,
2487 & type_bnd_elem_med,med_coordinate,med_nodal,
2488 & chgt,tsf,npoin,ierr)
2492 &
'GET_BND_NPOIN_MED:MMHNME' 2497 CALL get_nodes_per_element(type_bnd_elem,ndp)
2500 ALLOCATE(ikle(nelebd*ndp),stat=ierr)
2504 &
'ALLOCAING GET_BND_NPOIN_MED:IKLE' 2514 &
'GET_BND_NPOIN_MED:GET_BND_CONNECTIVITY_MED' 2518 ALLOCATE(is_bnd(npoin),stat=ierr)
2522 &
'ALLOCATING GET_BND_NPOIN_MED:IKLE' 2534 is_bnd(ikle(i+(j-1)*nelebd)) = .true.
2539 nptfr = count(is_bnd.EQV..true.)
2560 & LIHBOR,LIUBOR,LIVBOR,TRAC,LITBOR,
2580 INTEGER,
INTENT(IN) :: FILE_ID
2581 INTEGER,
INTENT(IN) :: TYPE_BND_ELEM
2582 INTEGER,
INTENT(IN) :: NELEBD
2583 INTEGER,
INTENT(IN) :: NPTFR
2584 INTEGER,
INTENT(INOUT) :: LIUBOR(nptfr),LIVBOR(nptfr)
2585 INTEGER,
INTENT(INOUT) :: LIHBOR(nptfr),LITBOR(*)
2586 LOGICAL,
INTENT(IN) :: TRAC
2587 INTEGER,
INTENT(OUT) :: IERR
2589 #if defined (HAVE_MED) 2590 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
2591 INTEGER,
ALLOCATABLE :: FAMILY(:)
2592 INTEGER,
ALLOCATABLE :: IKLE(:)
2593 INTEGER,
ALLOCATABLE :: NBOR(:)
2594 INTEGER :: NDP,IGRP,MED_ID
2595 INTEGER :: INODE,IPTFR
2596 INTEGER :: TYPE_ELEM_MED
2597 INTEGER :: IGRP_CUR, IGRP_NXT
2598 INTEGER :: BND_TYP_CUR, BND_TYP_NXT
2599 INTEGER :: CURRENT, NEXT
2606 CALL get_obj(
hash,file_id,med_id,ierr)
2609 &
'GET_BND_VALUE_MED:GET_OBJ' 2618 &
'GET_BND_VALUE_MED:CONVERT_ELEM_TYPE' 2627 &
'GET_BND_VALUE_MED:NDP_FROM_ELT_TYPE_MED' 2636 &
'GET_BND_VALUE_MED:IDENTIFY_BND_ELMT' 2644 &
'GET_BND_VALUE_MED:GET_MESH_NPTIR_MED' 2666 ALLOCATE(family(nptfr),stat=ierr)
2670 &
'ALLOCATING GET_BND_VALUE_MED:FAMILY' 2680 &
'GET_BND_VALUE_MED:GET_BND_FAMILY_MED' 2684 igrp = family(iptfr)
2685 lihbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,1)
2686 liubor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,2)
2687 livbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,3)
2689 litbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,4)
2694 ALLOCATE(family(nelebd),stat=ierr)
2698 &
'ALLOCATING GET_BND_VALUE_MED:FAMILY' 2706 &
'GET_BND_VALUE_MED:GET_BND_FAMILY_MED' 2710 ALLOCATE(ikle(nelebd*ndp),stat=ierr)
2714 &
'ALLOCATING GET_BND_VALUE_MED:IKLE' 2724 &
'GET_BND_VALUE_MED:GET_BND_CONN_MED' 2730 ALLOCATE(nbor(nptfr))
2742 igrp_cur = family(current)
2743 igrp_nxt = family(next)
2744 bnd_typ_cur =
med_obj_tab(med_id)%BND_GRP_VAL(igrp_cur,1)
2745 bnd_typ_nxt =
med_obj_tab(med_id)%BND_GRP_VAL(igrp_nxt,1)
2747 CALL seg2point(current,next,bnd_typ_cur,bnd_typ_nxt,ieleb)
2748 igrp = family(ieleb)
2750 lihbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,1)
2751 liubor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,2)
2752 livbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,3)
2754 litbor(iptfr) =
med_obj_tab(med_id)%BND_GRP_VAL(igrp,4)
2785 INTEGER,
INTENT(IN) :: FILE_ID
2786 INTEGER,
INTENT(OUT) :: NVAR
2787 INTEGER,
INTENT(OUT) :: IERR
2791 #if defined (HAVE_MED) 2794 INTEGER(KIND=KID) :: FID
2797 CALL get_obj(
hash,file_id,med_id,ierr)
2800 &
'GET_BND_VALUE_MED:GET_OBJ' 2805 CALL mfdnfd(fid,nvar,ierr)
2809 &
'GET_DATA_NVAR_MED:MFDNFD' 2840 INTEGER,
INTENT(IN) :: FILE_ID
2841 INTEGER,
INTENT(IN) :: NVAR
2842 CHARACTER(LEN=16),
DIMENSION(:),
INTENT(OUT) :: VAR_LIST
2843 CHARACTER(LEN=16),
DIMENSION(:),
INTENT(OUT) :: UNIT_LIST
2844 INTEGER,
INTENT(OUT) :: IERR
2845 INTEGER(KIND=KID) :: FID
2847 #if defined (HAVE_MED) 2848 CHARACTER(LEN=MED_NAME_SIZE) :: VAR_NAME, MNAME
2849 CHARACTER(LEN=MED_SNAME_SIZE) :: CUNIT, CNAME, DTUNIT
2851 INTEGER :: MED_ID, I, ITYPE, NSTEP, IMESH
2856 CALL get_obj(
hash,file_id,med_id,ierr)
2859 &
'GET_DATA_VAR_LIST_MED:GET_OBJ' 2869 CALL mfdfdi(fid,i,var_name,mname,imesh,itype,
2870 & cname,cunit,dtunit,nstep,ierr)
2874 &
'GET_DATA_VAR_LIST_MED:MFDFDI' 2879 var_list(i) = var_name(1:16)
2880 unit_list(i) = cunit
2909 INTEGER,
INTENT(IN) :: FILE_ID
2910 INTEGER,
INTENT(OUT) :: NTIMESTEP
2911 INTEGER,
INTENT(OUT) :: IERR
2913 #if defined (HAVE_MED) 2914 CHARACTER(LEN=MED_NAME_SIZE) :: VAR_NAME_MED, MNAME
2915 CHARACTER(LEN=MED_SNAME_SIZE) :: CUNIT,CNAME,DTUNIT
2917 INTEGER :: ITYPE, MED_ID, IMESH, NVAR
2918 INTEGER(KIND=KID) :: FID
2923 CALL get_obj(
hash,file_id,med_id,ierr)
2926 &
'GET_DATA_NTIMESTEP_MED:GET_OBJ' 2933 CALL mfdnfd(fid,nvar,ierr)
2937 &
'GET_DATA_NTIMESTEP_MED:MFDNFD' 2945 CALL mfdfdi(fid,1,var_name_med,mname,imesh,
2946 & itype,cunit,cname,dtunit,ntimestep,ierr)
2950 &
'GET_DATA_NTIMESTEP_MED:MFDFDI' 2983 INTEGER,
INTENT(IN) :: FILE_ID, RECORD
2984 DOUBLE PRECISION,
INTENT(OUT) :: TIME
2985 INTEGER,
INTENT(OUT) :: IERR
2987 #if defined (HAVE_MED) 2988 CHARACTER(LEN=MED_NAME_SIZE) :: VAR_NAME_MED
2989 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
2990 CHARACTER(LEN=MED_SNAME_SIZE) :: CNAME,CUNIT,DTUNIT
2991 INTEGER :: N, MED_ID, LMESH
2995 INTEGER(KIND=KID) :: FID
3000 CALL get_obj(
hash,file_id,med_id,ierr)
3003 &
'GET_DATA_TIME_MED:GET_OBJ' 3010 CALL mfdfdi(fid,1,var_name_med,mname,lmesh,ftype,
3011 & cname,cunit,dtunit,n,ierr)
3015 &
'GET_DATA_TIME_MED:MFDFDI' 3023 med_iter = record + 1
3024 CALL mfdcsi(fid,var_name_med,med_iter,dt,it,
3029 &
'GET_DATA_TIME_MED:MFDCSI' 3060 INTEGER,
INTENT(IN) :: FILE_ID, RECORD, N
3061 CHARACTER(LEN=16),
INTENT(IN) :: VAR_NAME
3062 DOUBLE PRECISION,
INTENT(INOUT) :: RES_VALUE(n)
3063 INTEGER,
INTENT(OUT) :: IERR
3065 #if defined (HAVE_MED) 3066 CHARACTER(LEN=MED_NAME_SIZE) :: VAR_NAME_MED
3069 INTEGER :: LMESH, ITYPE, NSTEP
3070 CHARACTER(LEN=MED_SNAME_SIZE) :: CNAME,CUNIT,DTUNIT
3071 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
3073 INTEGER(KIND=KID) :: FID
3078 CALL get_obj(
hash,file_id,med_id,ierr)
3081 &
'GET_DATA_VALUE_MED:GET_OBJ' 3088 var_name_med = trim(var_name)//char(0)
3091 CALL mfdncn(fid,var_name_med,ncomp,ierr)
3095 & var_name_med//
' IS UNKNOWN' 3102 CALL mfdfin(fid,var_name_med,mname,lmesh,itype,
3103 & cname,cunit,dtunit,nstep,ierr)
3107 &
'GET_DATA_VALUE_MED:MFDFIN' 3111 IF(record.GE.nstep.OR.record.LT.0)
THEN 3114 & i2char(record)//
' IS NOT BETWEEN 0 AND'//i2char(nstep)
3120 CALL mfdrvr(fid,var_name_med,record,med_no_it,med_node,
3121 & med_none,med_no_interlace,1,res_value,ierr)
3125 &
'GET_DATA_VALUE_MED:MFDRVR' 3152 INTEGER,
INTENT(IN) :: FILE_ID
3153 CHARACTER(LEN=80),
INTENT(IN) :: TITLE
3154 INTEGER,
INTENT(OUT) :: IERR
3156 #if defined (HAVE_MED) 3157 CHARACTER(LEN=MED_COMMENT_SIZE) :: TITLE_MED
3159 INTEGER(KIND=KID) :: FID
3164 CALL get_obj(
hash,file_id,med_id,ierr)
3167 &
'SET_HEADER_MED:GET_OBJ' 3175 CALL mficow(fid,title_med,ierr)
3179 &
'SET_HEADER_MED:MFICOW' 3197 SUBROUTINE set_mesh_med(FILE_ID,NB_DIM_PB,NB_DIM_MESH,TYPE_ELEM,
3198 & NDP,NPTIR,NELEM,NPOIN,IKLE,KNOLG,COORD,NPLAN,
3199 & DATE,TIME,X_ORIG,Y_ORIG,IERR)
3225 INTEGER,
INTENT(IN) :: FILE_ID, NB_DIM_PB, NB_DIM_MESH
3226 INTEGER,
INTENT(IN) :: NELEM, NPOIN, TYPE_ELEM, NDP, NPTIR
3227 INTEGER,
INTENT(IN) :: NPLAN, X_ORIG, Y_ORIG
3228 INTEGER,
INTENT(IN) :: IKLE(ndp*nelem), KNOLG(*)
3229 DOUBLE PRECISION,
INTENT(IN) :: COORD(nb_dim_mesh*npoin)
3230 INTEGER,
INTENT(IN) :: DATE(3), TIME(3)
3231 INTEGER,
INTENT(OUT) :: IERR
3233 #if defined (HAVE_MED) 3234 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
3235 CHARACTER(LEN=MED_NAME_SIZE) :: DT_UNIT_MED
3236 CHARACTER(LEN=MED_NAME_SIZE) :: FAM_ZERO
3237 CHARACTER(LEN=MED_NAME_SIZE) :: PNAME
3238 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_NAME_MED(:)
3239 CHARACTER(LEN=MED_SNAME_SIZE),
ALLOCATABLE :: COOR_UNIT_MED(:)
3240 CHARACTER(LEN=MED_SNAME_SIZE) :: COOR_X, COOR_Y, COOR_Z
3241 CHARACTER(LEN=MED_SNAME_SIZE) :: COOR_UNIT
3242 CHARACTER(LEN=MED_COMMENT_SIZE) :: COMMENT
3244 INTEGER :: IFAM, MED_ID, TYPE_ELEM_MED,I, MYDATE
3245 INTEGER :: NPLAN_TMP
3246 INTEGER(KIND=KID) :: FID
3251 comment =
'TELEMAC GENERATED MESH'//char(0)
3252 coor_x =
'X'//char(0)
3253 coor_y =
'Y'//char(0)
3254 coor_z =
'Z'//char(0)
3255 coor_unit =
'M'//char(0)
3256 ALLOCATE(coor_name_med(nb_dim_pb),stat=ierr)
3260 &
'ALLOCATING COOR_NAME_MED' 3263 ALLOCATE(coor_unit_med(nb_dim_pb),stat=ierr)
3267 &
'ALLOCATING COOR_UNIT_MED' 3270 coor_name_med(1) = coor_x
3271 coor_name_med(2) = coor_y
3272 IF (nb_dim_pb.EQ.3) coor_name_med(3) = coor_z
3274 coor_unit_med(i) = coor_unit
3278 dt_unit_med =
'S'//char(0)
3281 CALL get_obj(
hash,file_id,med_id,ierr)
3285 &
'SET_MESH_MED:GET_OBJ' 3296 &
'SET_MESH_MED:CONVERT_ELEM_TYPE' 3301 CALL mmhcre(fid,mname,nb_dim_pb,nb_dim_mesh,
3302 & med_unstructured_mesh,comment,dt_unit_med,med_sort_dtit,
3303 & med_cartesian,coor_name_med,coor_unit_med,ierr)
3307 &
'SET_MESH_MED:MMHCRE' 3310 DEALLOCATE(coor_name_med)
3311 DEALLOCATE(coor_unit_med)
3314 CALL mmhcow(fid,mname,med_no_dt,med_no_it,0.d0,
3315 & med_no_interlace,npoin,coord,ierr)
3319 &
'SET_MESH_MED:MMHCOW' 3324 CALL mmhcyw(fid,mname,med_no_dt,med_no_it,0.0,med_cell,
3325 & type_elem_med,med_nodal,med_no_interlace,nelem,ikle,ierr)
3329 &
'SET_MESH_MED:MMHCYW' 3334 pname =
'NPLAN'//char(0)
3335 comment =
'Number of planes'//char(0)
3338 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3342 &
'SET_MESH_MED:MPRCRE' 3352 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,nplan_tmp,ierr)
3356 &
'SET_MESH_MED:MPRIVW' 3360 pname =
'X_ORIG'//char(0)
3361 comment =
'X origin'//char(0)
3364 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3368 &
'SET_MESH_MED:MPRCRE' 3372 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,x_orig,ierr)
3376 &
'SET_MESH_MED:MPRIVW' 3379 pname =
'Y_ORIG'//char(0)
3380 comment =
'Y origin'//char(0)
3383 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3387 &
'SET_MESH_MED:MPRCRE' 3392 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,y_orig,ierr)
3396 &
'SET_MESH_MED:MPRIVW' 3401 pname =
'DATE'//char(0)
3402 comment =
'Date of the file'//char(0)
3405 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3409 &
'SET_MESH_MED:MPRCRE' 3414 mydate = date(1)*10000 +
3417 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,mydate,ierr)
3421 &
'SET_MESH_MED:MPRIVW' 3426 pname =
'TIME'//char(0)
3427 comment =
'Time of the file'//char(0)
3430 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3434 &
'SET_MESH_MED:MPRCRE' 3439 mydate = time(1)*10000 +
3442 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,mydate,ierr)
3446 &
'SET_MESH_MED:MPRIVW' 3454 CALL mmhgnw(fid,mname,med_no_dt,med_no_it,med_node,
3455 & med_none,npoin,knolg,ierr)
3459 &
'SET_MESH_MED:MMHGNW' 3464 pname =
'NPTIR'//trim(
med_obj_tab(med_id)%MESH_NUMBER_STR)
3466 comment =
'Number of interface points'//char(0)
3469 CALL mprcre(fid,pname,med_int,comment,dt_unit_med,ierr)
3473 &
'SET_MESH_MED:MPRCRE' 3478 CALL mprivw(fid,pname,med_no_dt,med_no_it,0.0,nptir,ierr)
3482 &
'SET_MESH_MED:MPRIVW' 3489 fam_zero =
'FAMILY_ZERO'//char(0)
3491 CALL mfacre(fid,mname,fam_zero,ifam,0,
' ',ierr)
3495 &
'SET_MESH_MED:MFACRE' 3506 SUBROUTINE add_data_med (FILE_ID, VAR_NAME, TIME, RECORD,
3507 & VAR_VALUE, N, IERR)
3525 INTEGER,
INTENT(IN) :: FILE_ID, N
3526 INTEGER,
INTENT(IN) :: RECORD
3527 CHARACTER(LEN=32),
INTENT(IN) :: VAR_NAME
3528 DOUBLE PRECISION,
INTENT(IN) :: TIME
3529 DOUBLE PRECISION,
INTENT(IN) :: VAR_VALUE(n)
3530 INTEGER,
INTENT(OUT) :: IERR
3532 #if defined (HAVE_MED) 3533 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME, VAR_NAME_MED
3534 CHARACTER(LEN=MED_SNAME_SIZE) :: VAR_COMP_MED, UNIT_VAR_MED
3535 CHARACTER(LEN=MED_SNAME_SIZE) :: UNIT_TIME_MED
3538 INTEGER(KIND=KID) :: FID
3543 CALL get_obj(
hash,file_id,med_id,ierr)
3546 &
'ADD_DATA_MED:GET_MED_OBJ' 3554 var_name_med = trim(var_name(1:16))//char(0)
3555 var_comp_med = trim(var_name(1:16))//char(0)
3556 unit_var_med = trim(var_name(17:32))//char(0)
3557 unit_time_med =
'S'//char(0)
3559 IF(record.EQ.0)
THEN 3561 CALL mfdcre(fid,var_name_med,med_float64,nb_comp,
3562 & var_comp_med,unit_var_med,unit_time_med,mname,ierr)
3566 &
'ADD_DATA_MED:MFDCRE' 3572 CALL mfdrvw(fid,var_name_med,record,med_no_it,time,med_node,
3573 & med_none,med_no_interlace,nb_comp,n,var_value,ierr)
3577 &
'ADD_DATA_MED:MFDRVW' 3589 #if defined HAVE_MED 3591 & MNAME_SRC,MNAME_DST,HAS_FAM_ON_POINT,IERR)
3610 INTEGER,
INTENT(IN) :: SOURCE_ID
3611 INTEGER,
INTENT(IN) :: DEST_ID
3612 CHARACTER(LEN=MED_NAME_SIZE),
INTENT(INOUT):: MNAME_SRC, MNAME_DST
3613 LOGICAL,
INTENT(OUT) :: HAS_FAM_ON_POINT
3614 INTEGER,
INTENT(OUT) :: IERR
3616 INTEGER :: MED_ID_SRC, MED_ID_DST
3617 INTEGER :: NB_GRP, NBND_GRP
3618 CHARACTER(LEN=MED_LNAME_SIZE),
ALLOCATABLE :: GRP_NAME(:)
3619 CHARACTER(LEN=MED_NAME_SIZE) FAM_NAME
3621 INTEGER :: INUM, IFAM, NB_FAMILY
3623 INTEGER(KIND=KID) :: SOURCE_FID, DEST_FID
3626 CALL get_obj(
hash,source_id,med_id_src,ierr)
3629 &
'TRANSFER_GROUP_INFO_COMMON_MED:GET_OBJ' 3633 CALL get_obj(
hash,dest_id,med_id_dst,ierr)
3636 &
'TRANSFER_GROUP_INFO_COMMON_MED:GET_OBJ' 3644 CALL mfanfa(source_fid,mname_src,nb_family,ierr)
3648 &
'TRANSFER_GROUP_INFO_COMMON_MED:MFANFA' 3652 has_fam_on_point = .false.
3654 DO ifam = 1, nb_family
3657 CALL mfanfg(source_fid,mname_src,ifam,nb_grp,ierr)
3661 &
'TRANSFER_GROUP_INFO_COMMON_MED:MFANFG' 3665 ALLOCATE(grp_name(max(nb_grp,1)),stat=ierr)
3669 &
'ALLOCATING TRANSFER_GROUP_INFO_COMMON_MED:GRP_NAME' 3672 grp_name(:) = repeat(
' ',med_lname_size)
3675 CALL mfafai(source_fid,mname_src,ifam,fam_name,inum,
3680 &
'TRANSFER_GROUP_INFO_COMMON_MED:MFAFAI' 3685 DEALLOCATE(grp_name)
3689 IF(inum.GT.0) has_fam_on_point = .true.
3692 CALL mfacre(dest_fid,mname_dst,fam_name,inum,max(nb_grp,1),
3697 &
'TRANSFER_GROUP_INFO_COMMON_MED:MFACRE' 3701 DEALLOCATE(grp_name)
3708 &
'TRANSFER_GROUP_INFO_COMMON_MED:GET_MESH_NPTIR_MED' 3718 ALLOCATE(
med_obj_tab(med_id_dst)%BND_GRP_VAL(nbnd_grp,4),
3723 &
'ALLOCATING TRANSFER_GROUP_INFO_COMMON_MED:BND_GRP_VAL' 3726 ALLOCATE(
med_obj_tab(med_id_dst)%BND_GRP_NAME(nbnd_grp),
3731 &
'ALLOCATING TRANSFER_GROUP_INFO_COMMON_MED:BND_GRP_NAME' 3751 & SOURCE_ID, DEST_ID,
3752 & TYP_BND_ELEM, IKLE_BND_DEST, NELEBD_DEST,
3753 & NDP_DEST, NELEBD_SRC, KNOGL_BND,
3754 & TRANS_POINT, NPOIN_SRC, NPOIN_DEST, KNOLG, IERR)
3784 INTEGER,
INTENT(IN) :: SOURCE_ID
3785 INTEGER,
INTENT(IN) :: DEST_ID
3786 INTEGER,
INTENT(IN) :: NELEBD_DEST
3787 INTEGER,
INTENT(IN) :: NDP_DEST
3788 INTEGER,
INTENT(IN) :: IKLE_BND_DEST(nelebd_dest*ndp_dest)
3789 INTEGER,
INTENT(IN) :: TYP_BND_ELEM
3790 INTEGER,
INTENT(IN) :: NELEBD_SRC
3791 INTEGER,
INTENT(IN) :: KNOGL_BND(nelebd_src)
3792 LOGICAL,
INTENT(IN) :: TRANS_POINT
3793 INTEGER,
INTENT(IN) :: NPOIN_SRC
3794 INTEGER,
INTENT(IN) :: NPOIN_DEST
3795 INTEGER,
INTENT(IN) :: KNOLG(npoin_dest)
3796 INTEGER,
INTENT(OUT) :: IERR
3798 #if defined HAVE_MED 3799 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME, MNAME2
3800 INTEGER :: TYPE_ELEM_MED
3801 INTEGER,
ALLOCATABLE :: FAM_NUM(:)
3802 INTEGER,
ALLOCATABLE :: FAM_NUM_DEST(:)
3804 INTEGER :: NELEM_SRC
3805 LOGICAL :: HAS_FAM_ON_POINT
3806 INTEGER :: MED_ID_SRC, MED_ID_DST
3807 INTEGER(KIND=KID) :: SOURCE_FID, DEST_FID
3812 & mname2, has_fam_on_point, ierr)
3813 IF(ierr.NE.0)
RETURN 3815 CALL get_obj(
hash,source_id,med_id_src,ierr)
3818 &
'TRANSFER_GROUP_PART_INFO_MED:GET_OBJ' 3822 CALL get_obj(
hash,dest_id,med_id_dst,ierr)
3825 &
'TRANSFER_GROUP_PART_INFO_MED:GET_OBJ' 3832 IF(typ_bnd_elem.NE.0.AND.nelebd_dest.NE.0)
THEN 3838 &
'ALLOCATING TRANSFER_GROUP_PART_INFO_MED:CONVERT_ELEM_TYPE' 3843 CALL mmhcyw(dest_fid,mname2,med_no_dt,med_no_it,0.0,med_cell,
3844 & type_elem_med,med_nodal,med_no_interlace,nelebd_dest,
3845 & ikle_bnd_dest,ierr)
3849 &
'TRANSFER_GROUP_PART_INFO_MED:MMHCYW:BND' 3859 &
'TRANSFER_GROUP_PART_INFO_MED:CONVERT_ELEM_TYPE' 3864 ALLOCATE(fam_num(nelem_src),stat=ierr)
3868 &
'ALLOCATING TRANSFER_GROUP_PART_INFO_MED:FAM_NUM:BND' 3872 CALL mmhfnr(source_fid,mname,med_no_dt,med_no_it,med_cell,
3873 & type_elem_med,fam_num,ierr)
3877 &
'TRANSFER_GROUP_PART_INFO_MED:MMHFNR:BND' 3882 ALLOCATE(fam_num_dest(nelebd_dest),stat=ierr)
3886 &
'ALLOCATING FAM_NUM_DEST:BND' 3893 IF(knogl_bnd(j).EQ.0)
THEN 3896 fam_num_dest(knogl_bnd(j)) = fam_num(i)
3900 CALL mmhfnw(dest_fid,mname2,med_no_dt,med_no_it,med_cell,
3901 & type_elem_med,nelebd_dest,fam_num_dest,ierr)
3905 &
'TRANSFER_GROUP_PART_INFO_MED:MMHFNW:BND' 3910 DEALLOCATE(fam_num_dest)
3914 IF(trans_point.AND.has_fam_on_point)
THEN 3917 ALLOCATE(fam_num(npoin_src),stat=ierr)
3921 &
'ALLOCATING TRANSFER_GROUP_PART_INFO_MED:FAM_NUM' 3925 CALL mmhfnr(source_fid,mname,med_no_dt,med_no_it,med_node,
3926 & med_none,fam_num,ierr)
3930 &
'TRANSFER_GROUP_PART_INFO_MED:MMHFNR' 3935 ALLOCATE(fam_num_dest(npoin_dest),stat=ierr)
3939 &
'ALLOCATING FAM_NUM_DEST' 3943 fam_num_dest(i) = fam_num(knolg(i))
3946 CALL mmhfnw(dest_fid,mname2,med_no_dt,med_no_it,med_node,
3947 & med_none,npoin_dest,fam_num_dest,ierr)
3951 &
'TRANSFER_GROUP_PART_INFO_MED:MMHFNW' 3956 DEALLOCATE(fam_num_dest)
3967 & TYP_BND_ELEM, IKLE_BND, NELEBD,
3969 & TRANS_POINT, IERR)
3992 INTEGER,
INTENT(IN) :: SOURCE_ID
3993 INTEGER,
INTENT(IN) :: DEST_ID
3994 INTEGER,
INTENT(IN) :: NELEBD
3995 INTEGER,
INTENT(IN) :: NDP
3996 INTEGER,
INTENT(IN) :: IKLE_BND(nelebd*ndp)
3997 INTEGER,
INTENT(IN) :: TYP_ELEM
3998 INTEGER,
INTENT(IN) :: TYP_BND_ELEM
3999 LOGICAL,
INTENT(IN) :: TRANS_ELEM
4000 LOGICAL,
INTENT(IN) :: TRANS_POINT
4001 INTEGER,
INTENT(OUT) :: IERR
4003 #if defined (HAVE_MED) 4004 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME_SRC, MNAME_DST
4005 INTEGER :: TYPE_ELEM_MED
4006 INTEGER,
ALLOCATABLE :: FAM_NUM_SRC(:), FAM_NUM_DST(:)
4008 INTEGER :: NELEM,NELEBD_SRC
4009 LOGICAL :: HAS_FAM_ON_POINT
4011 INTEGER :: MED_ID_SRC, MED_ID_DST
4012 INTEGER(KIND=KID) :: SOURCE_FID, DEST_FID
4014 CALL get_obj(
hash,source_id,med_id_src,ierr)
4017 &
'TRANSFER_GROUP_INFO:GET_OBJ' 4021 CALL get_obj(
hash,dest_id,med_id_dst,ierr)
4024 &
'TRANSFER_GROUP_PART_INFO_MED:GET_OBJ' 4032 & mname_dst, has_fam_on_point, ierr)
4033 IF(ierr.NE.0)
RETURN 4035 IF(typ_bnd_elem.NE.0.AND.nelebd.NE.0)
THEN 4041 &
'TRANSFER_GROUP_INFO:CONVERT_ELEM_TYPE' 4046 CALL mmhcyw(dest_fid,mname_dst,med_no_dt,med_no_it,0.0,med_cell,
4047 & type_elem_med,med_nodal,med_no_interlace,nelebd,
4052 &
'TRANSFER_GROUP_INFO:MMHCYW' 4061 &
'TRANSFER_GROUP_INFO:CONVERT_ELEM_TYPE' 4065 ALLOCATE(fam_num_src(nelebd_src),stat=ierr)
4069 &
'ALLOCATING TRANSFER_GROUP_INFO:FAM_NUM_DST' 4073 CALL mmhfnr(source_fid,mname_src,med_no_dt,med_no_it,med_cell,
4074 & type_elem_med,fam_num_src,ierr)
4078 &
'TRANSFER_GROUP_INFO:MMHFNR' 4082 ALLOCATE(fam_num_dst(nelebd),stat=ierr)
4086 &
'ALLOCATING TRANSFER_GROUP_INFO:FAM_NUM_DST' 4093 fam_num_dst(j) = fam_num_src(i)
4097 CALL mmhfnw(dest_fid,mname_dst,med_no_dt,med_no_it,med_cell,
4098 & type_elem_med,nelebd,fam_num_dst,ierr)
4102 &
'TRANSFER_GROUP_INFO:MMHFNW' 4105 DEALLOCATE(fam_num_dst)
4106 DEALLOCATE(fam_num_src)
4115 &
'TRANSFER_GROUP_INFO:CONVERT_ELEM_TYPE' 4123 &
'TRANSFER_GROUP_INFO:CONVERT_ELEM_TYPE' 4127 ALLOCATE(fam_num_dst(nelem),stat=ierr)
4131 &
'ALLOCATING TRANSFER_GROUP_INFO:FAM_NUM:ELEM' 4136 CALL mmhfnr(source_fid,mname_src,med_no_dt,med_no_it,med_cell,
4137 & type_elem_med,fam_num_dst,ierr)
4144 &
'TRANSFER_GROUP_INFO:MMHFNR:ELEM' 4148 CALL mmhfnw(dest_fid,mname_dst,med_no_dt,med_no_it,med_cell,
4149 & type_elem_med,nelem,fam_num_dst,ierr)
4153 &
'TRANSFER_GROUP_INFO:MMHFNW:ELEM' 4159 DEALLOCATE(fam_num_dst)
4163 IF(trans_point.AND.has_fam_on_point)
THEN 4168 &
'TRANSFER_GROUP_INFO:CONVERT_ELEM_TYPE' 4173 ALLOCATE(fam_num_dst(npoin),stat=ierr)
4177 &
'ALLOCATING TRANSFER_GROUP_INFO:FAM_NUM_DST' 4181 CALL mmhfnr(source_fid,mname_src,med_no_dt,med_no_it,med_node,
4182 & med_none,fam_num_dst,ierr)
4186 &
'TRANSFER_GROUP_INFO:MMHFNR' 4190 CALL mmhfnw(dest_fid,mname_dst,med_no_dt,med_no_it,med_node,
4191 & med_none,npoin,fam_num_dst,ierr)
4195 &
'TRANSFER_GROUP_INFO:MMHFNW' 4198 DEALLOCATE(fam_num_dst)
4211 & NPTFR,LIHBOR,LIUBOR,LIVBOR,LITBOR,IERR)
4232 INTEGER,
INTENT(IN) :: FILE_ID
4233 INTEGER,
INTENT(IN) :: TYPE_BND_ELT
4234 INTEGER,
INTENT(IN) :: NELEBD
4235 INTEGER,
INTENT(IN) :: NDP
4236 INTEGER,
INTENT(IN) :: IKLE_BND(nelebd*ndp)
4237 INTEGER,
INTENT(IN) :: NPTFR
4238 INTEGER,
INTENT(IN) :: LIUBOR(nptfr),LIVBOR(nptfr)
4239 INTEGER,
INTENT(IN) :: LIHBOR(nptfr),LITBOR(nptfr)
4240 INTEGER,
INTENT(OUT) :: IERR
4242 #if defined (HAVE_MED) 4243 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
4244 INTEGER :: MED_ID, TYPE_BND_ELEM_MED
4245 CHARACTER(LEN=MED_LNAME_SIZE) GRP_NAME
4246 CHARACTER(LEN=MED_NAME_SIZE) FAM_NAME
4247 INTEGER :: NCLI,I,J,K,IPTFR
4248 INTEGER,
ALLOCATABLE :: FAM_NUM(:)
4249 INTEGER,
PARAMETER :: NVAL(3) = (/4,5,3/)
4250 INTEGER :: H_VAL(nval(1))
4251 INTEGER :: U_VAL(nval(2))
4252 INTEGER :: T_VAL(nval(3))
4253 INTEGER :: LIST_VAL(nval(1)*nval(2)*nval(3))
4255 INTEGER(KIND=KID) :: FID
4256 LOGICAL,
ALLOCATABLE :: WRITE_GRP(:)
4261 CALL get_obj(
hash,file_id,med_id,ierr)
4264 &
'SET_BND_MED:GET_OBJ' 4276 &
'SET_BND_MED:CONVERT_ELEM_TYPE' 4283 CALL mmhcyw(fid,mname,med_no_dt,med_no_it,0.0,med_cell,
4284 & type_bnd_elem_med,med_nodal,med_no_interlace,nelebd,
4289 &
'SET_BND_MED:MMHCYW' 4294 h_val = (/ 1,4,5,2/)
4295 u_val = (/ 6,0,4,5,2/)
4297 med_obj_tab(med_id)%NBND_GRP = nval(1)*nval(2)*nval(3)
4303 &
'ALLOCATING MEDOBJ%BND_GRP_VAL' 4311 &
'ALLOCATING MEDOBJ%GRP_NAME' 4314 ALLOCATE(write_grp(
med_obj_tab(med_id)%NBND_GRP), stat=ierr)
4318 &
'ALLOCATING WRITE_GRP' 4327 med_obj_tab(med_id)%BND_GRP_VAL(ifam,1) = h_val(i)
4328 med_obj_tab(med_id)%BND_GRP_VAL(ifam,2) = u_val(j)
4329 med_obj_tab(med_id)%BND_GRP_VAL(ifam,3) = u_val(j)
4330 med_obj_tab(med_id)%BND_GRP_VAL(ifam,4) = t_val(k)
4332 & h_val(i)*1000 + u_val(j)*100
4333 & + u_val(j)*10 + t_val(k)
4334 grp_name = repeat(
' ',med_lname_size)
4335 grp_name =
'CONLIM_'//trim(i2char(h_val(i)))//
4336 & trim(i2char(u_val(j)))//
4337 & trim(i2char(u_val(j)))//
4338 & trim(i2char(t_val(k)))
4347 ALLOCATE(fam_num(nptfr),stat=ierr)
4351 &
'ALLOCATING FAM_NUM' 4359 & lihbor(iptfr).EQ.
med_obj_tab(med_id)%BND_GRP_VAL(j,1).AND.
4360 & liubor(iptfr).EQ.
med_obj_tab(med_id)%BND_GRP_VAL(j,2).AND.
4361 & livbor(iptfr).EQ.
med_obj_tab(med_id)%BND_GRP_VAL(j,3).AND.
4362 & litbor(iptfr).EQ.
med_obj_tab(med_id)%BND_GRP_VAL(j,4))
4364 fam_num(iptfr) = j +
offset 4366 write_grp(j) = .true.
4370 IF(fam_num(iptfr).EQ.0)
THEN 4374 &
'UNKNOW BOUNDARY CONDITION LI[HUVT]BOR : '//
4375 & i2char(lihbor(iptfr))//
' '//
4376 & i2char(liubor(iptfr))//
' '//
4377 & i2char(livbor(iptfr))//
' '//
4378 & i2char(litbor(iptfr))
4385 IF(write_grp(i))
THEN 4387 fam_name =
'FAM_'//trim(grp_name)
4389 CALL mfacre(fid,mname,fam_name,i+
offset,1,
4394 &
'SET_BND_MED:MFACRE:' 4401 CALL mmhfnw(fid,mname,med_no_dt,med_no_it,med_cell,
4402 & type_bnd_elem_med,nptfr,fam_num,ierr)
4422 med_obj_tab(med_id)%NBND_USED_GRP = count(write_grp)
4425 IF(write_grp(i))
THEN 4464 INTEGER,
INTENT(IN) :: FILE_ID
4465 INTEGER,
INTENT(IN) :: RECORD
4466 DOUBLE PRECISION,
INTENT(IN) :: TIME
4467 INTEGER,
INTENT(IN) :: NB_DIM_MESH, NPOIN
4468 DOUBLE PRECISION,
INTENT(IN) :: COORD(nb_dim_mesh*npoin)
4469 INTEGER,
INTENT(OUT) :: IERR
4471 #if defined (HAVE_MED) 4472 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME
4474 INTEGER(KIND=KID) :: FID
4479 CALL get_obj(
hash,file_id,med_id,ierr)
4484 CALL mmhcow(fid,mname,record,med_no_it,time,
4485 & med_no_interlace,npoin,coord,ierr)
4489 &
'UPDATE_DATA_MESH_MED:MMHCOW' 4504 SUBROUTINE ifvector_(STRING,COMP_NUM,ISVECTOR)
4514 CHARACTER(LEN=32),
INTENT(INOUT) :: STRING
4515 INTEGER,
INTENT(INOUT) :: COMP_NUM
4516 LOGICAL,
INTENT(INOUT) :: ISVECTOR
4526 IF (string(1:6)/=
'COTE Z')
THEN 4528 IF (string(j-1:j+1) .EQ.
' U ')
THEN 4532 ELSEIF (string(j-1:j+1) .EQ.
' V ')
THEN 4536 ELSEIF (string(j-1:j+1) .EQ.
' W ')
THEN 4540 ELSEIF (string(j-1:j+1) .EQ.
' X ')
THEN 4544 ELSEIF (string(j-1:j+1) .EQ.
' Y ')
THEN 4548 ELSEIF (string(j-1:j+1) .EQ.
' Z ')
THEN 4552 ELSEIF (string(j-1:j+1) .EQ.
'QX ')
THEN 4553 string(j-1:j) =
'Q*' 4556 ELSEIF (string(j-1:j+1) .EQ.
'QY ')
THEN 4557 string(j-1:j) =
'Q*' 4560 ELSEIF (string(j-1:j+1) .EQ.
'QZ ')
THEN 4561 string(j-1:j) =
'Q*' 4564 ELSEIF (string(j-1:j+1) .EQ.
'U0 ')
THEN 4565 string(j-1:j) =
'*0' 4568 ELSEIF (string(j-1:j+1) .EQ.
'V0 ')
THEN 4569 string(j-1:j) =
'*0' 4572 ELSEIF (string(j-1:j+1) .EQ.
'W0 ')
THEN 4573 string(j-1:j) =
'*0' 4595 INTEGER,
INTENT(IN) :: TYPE_ELEM
4596 INTEGER,
INTENT(INOUT) :: TYPE_ELEM_MED
4597 INTEGER,
INTENT(OUT) :: IERR
4601 #if defined HAVE_MED 4606 SELECT CASE(type_elem)
4610 type_elem_med = med_point1
4614 type_elem_med = med_seg2
4619 type_elem_med = med_tria3
4623 type_elem_med = med_quad4
4627 type_elem_med = med_tetra4
4631 type_elem_med = med_penta6
4654 INTEGER,
INTENT(IN) :: TYPE_ELEM_MED
4655 INTEGER,
INTENT(INOUT) :: NDP
4656 INTEGER,
INTENT(OUT) :: IERR
4663 #if defined HAVE_MED 4668 IF (type_elem_med .EQ. med_point1) ndp = 1
4669 IF (type_elem_med .EQ. med_seg2) ndp = 2
4672 IF (type_elem_med .EQ. med_tria3) ndp = 3
4673 IF (type_elem_med .EQ. med_quad4) ndp = 4
4676 IF (type_elem_med .EQ. med_tetra4) ndp = 4
4677 IF (type_elem_med .EQ. med_penta6) ndp = 6
4697 INTEGER,
INTENT(IN) :: FILE_ID
4698 INTEGER,
INTENT(IN) :: TYPE_BND_ELEM
4699 INTEGER,
INTENT(OUT) :: IERR
4703 #if defined HAVE_MED 4704 CHARACTER(LEN=MED_NAME_SIZE) :: MNAME, TEMP_FAM
4705 CHARACTER(LEN=MED_LNAME_SIZE),
ALLOCATABLE :: GRP_NAME(:)
4706 INTEGER :: INUM,IFAM,I,MED_ID,TYPE_ELEM_MED
4708 INTEGER :: NELEM,NB_FAMILY,NB_GRP
4709 INTEGER,
ALLOCATABLE :: NUM_FAMILY(:)
4711 INTEGER(KIND=KID) :: FID
4716 CALL get_obj(
hash,file_id,med_id,ierr)
4719 &
'IDENTIFY_BND_ELMT:GET_OBJ_FILE' 4725 IF(.NOT.
ALLOCATED(
med_obj_tab(med_id)%IS_BND))
THEN 4731 &
'IDENTIFY_BND_ELMT:CONVERT_ELEM_TYPE' 4739 &
'IDENTIFY_BND_ELMT:GET_BND_NELEM_MED' 4743 ALLOCATE(
med_obj_tab(med_id)%IS_BND(max(nelem,1)),stat=ierr)
4747 &
'ALLOCATING IDENTIFY_BND_ELMT:IS_BND' 4755 ALLOCATE(num_family(nelem),stat=ierr)
4759 &
'IDENTIFY_BND_ELMT:NUM_FAMILY' 4763 CALL mmhfnr(fid,mname,med_no_dt,med_no_it,med_cell,
4764 & type_elem_med,num_family,ierr)
4768 &
'IDENTIFY_BND_ELMT:MMHFNR' 4778 CALL mfanfa(fid,mname,nb_family,ierr)
4782 &
'IDENTIFY_BND_ELMT:MFANFA' 4785 ALLOCATE(
med_obj_tab(med_id)%BND_FAM(nb_family,2),stat=ierr)
4789 &
'ALLOCATING BND_FAM' 4793 DO ifam = 1, nb_family
4796 CALL mfanfg(fid,mname,ifam,nb_grp,ierr)
4800 &
'IDENTIFY_BND_ELMT:MFANFG' 4804 ALLOCATE(grp_name(max(nb_grp,1)),stat=ierr)
4808 &
'ALLOCATING IDENTIFY_BND_ELMT:GRP_NAME' 4813 CALL mfafai(fid,mname,ifam,temp_fam,inum,grp_name,ierr)
4817 &
'IDENTIFY_BND_ELMT:MFAFAI' 4825 DEALLOCATE(grp_name)
4831 DEALLOCATE(grp_name)
4840 IF(nb_grp.EQ.0)
EXIT 4850 DEALLOCATE(grp_name)
4857 IF(num_family(i).EQ.
4865 DEALLOCATE(num_family)
4873 SUBROUTINE seg2point(P1,P2,BND_TYP_P1,BND_TYP_P2,POINT)
4875 INTEGER,
INTENT(IN) :: P1,P2
4876 INTEGER,
INTENT(IN) :: BND_TYP_P1
4877 INTEGER,
INTENT(IN) :: BND_TYP_P2
4878 INTEGER,
INTENT(OUT):: POINT
4880 IF (bnd_typ_p1.EQ.
sol_bnd.AND.
4883 ELSE IF(bnd_typ_p1.EQ.
sol_bnd)
THEN 4885 ELSE IF(bnd_typ_p2.EQ.
sol_bnd)
THEN 4888 IF(bnd_typ_p1.LT.bnd_typ_p2)
THEN 4896 SUBROUTINE point2seg(P1,P2,BND_TYP_P1,BND_TYP_P2,SEG)
4898 INTEGER,
INTENT(IN) :: P1,P2
4899 INTEGER,
INTENT(IN) :: BND_TYP_P1
4900 INTEGER,
INTENT(IN) :: BND_TYP_P2
4901 INTEGER,
INTENT(OUT):: SEG
4903 IF(bnd_typ_p1.NE.
sol_bnd .AND.
4905 IF(bnd_typ_p1.LT.bnd_typ_p2)
THEN 4910 ELSE IF (bnd_typ_p1.EQ.
sol_bnd)
THEN subroutine set_mesh_med(FILE_ID, NB_DIM_PB, NB_DIM_MESH, TYPE_ELEM, NDP, NPTIR, NELEM, NPOIN, IKLE, KNOLG, COORD, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR)
integer, parameter hermes_wrong_med_version_err
subroutine ndp_from_element_type_med(TYPE_ELEM_MED, NDP, IERR)
subroutine set_bnd_med(FILE_ID, TYPE_BND_ELT, NELEBD, NDP, IKLE_BND, NPTFR, LIHBOR, LIUBOR, LIVBOR, LITBOR, IERR)
subroutine transfer_group_part_info_med(SOURCE_ID, DEST_ID, TYP_BND_ELEM, IKLE_BND_DEST, NELEBD_DEST, NDP_DEST, NELEBD_SRC, KNOGL_BND, TRANS_POINT, NPOIN_SRC, NPOIN_DEST, KNOLG, IERR)
subroutine close_bnd_med(FILE_ID, IERR, MESH_NUMBER)
integer, parameter prism_elt_type
subroutine get_bnd_numbering_med(FILE_ID, TYPE_ELEM_BND, NPTFR, NBOR, IERR)
integer, parameter hermes_wrong_hdf_format_err
subroutine open_bnd_med(FILE_NAME, FILE_ID, OPEN_MODE, IERR, MESH_NUMBER)
integer, parameter triangle_3d_bnd_elt_type
subroutine get_mesh_title_med(FILE_ID, TITLE, IERR)
subroutine seg2point(P1, P2, BND_TYP_P1, BND_TYP_P2, POINT)
subroutine get_data_var_list_med(FILE_ID, NVAR, VAR_LIST, UNIT_LIST, IERR)
subroutine get_mesh_npoin_med(FILE_ID, TYPE_ELEM, NPOIN, IERR)
integer, parameter split_prism_elt_type
subroutine get_mesh_connectivity_med(FILE_ID, TYPE_ELEM, IKLE, NELEM, NDP, IERR)
subroutine add_obj(HASH, FILE_ID, HASHED_ID, IERR)
integer, parameter hermes_wrong_med_format_err
integer, parameter hermes_unknown_element_type_err
YOANN AUDOUIN 10/05/2018 Initial version
subroutine convert_elem_type(TYPE_ELEM, TYPE_ELEM_MED, IERR)
integer, parameter hermes_wrong_axe_err
subroutine get_bnd_value_med(FILE_ID, TYPE_BND_ELEM, NELEBD, LIHBOR, LIUBOR, LIVBOR, TRAC, LITBOR, NPTFR, IERR)
subroutine get_mesh_nelem_med(FILE_ID, TYPE_ELEM, NELEM, IERR)
subroutine get_bnd_connectivity_med(FILE_ID, TYPE_ELEM, NELEBD, NDP, BND_IKLE, IERR)
subroutine get_obj(HASH, FILE_ID, HASHED_ID, IERR)
integer, parameter triangle_elt_type
subroutine identify_bnd_elmt(FILE_ID, TYPE_BND_ELEM, IERR)
subroutine get_bnd_ipobo_med(FILE_ID, TYPE_ELEM_BND, NPOIN, IPOBO, IERR)
character(len=200) error_message
integer, parameter sol_bnd
subroutine get_data_nvar_med(FILE_ID, NVAR, IERR)
integer, parameter hermes_unknown_bnd_condition
integer, parameter hermes_invalid_open_mode_err
subroutine get_mesh_coord_med(FILE_ID, JDIM, NDIM, NPOIN, COORD_AXE, IERR)
integer, parameter quadrangle_bnd_elt_type
subroutine transfer_group_info_med(SOURCE_ID, DEST_ID, TYP_ELEM, TYP_BND_ELEM, IKLE_BND, NELEBD, NDP, TRANS_ELEM, TRANS_POINT, IERR)
integer, parameter point_bnd_elt_type
subroutine get_bnd_family_med(FILE_ID, TYPE_BND_ELEM, NELEBD, FAMILY, IERR)
subroutine get_mesh_l2g_numbering_med(FILE_ID, KNOLG, NPOIN, IERR)
integer, parameter hermes_record_unknown_err
subroutine get_mesh_npoin_per_element_med(TYPE_ELEM, NDP, IERR)
subroutine get_bnd_grp_value_med(FILE_ID, GRP_NAME, VALUE, IERR)
integer, parameter max_file
integer, parameter edge_bnd_elt_type
subroutine add_data_med(FILE_ID, VAR_NAME, TIME, RECORD, VAR_VALUE, N, IERR)
subroutine point2seg(P1, P2, BND_TYP_P1, BND_TYP_P2, SEG)
type(med_info), dimension(max_file) med_obj_tab
subroutine open_mesh_med(FILE_NAME, FILE_ID, OPEN_MODE, IERR, MESH_NUMBER)
integer, parameter hermes_unknown_group_err
integer, parameter triangle_bnd_elt_type
subroutine get_mesh_dimension_med(FILE_ID, NDIM, IERR)
subroutine get_mesh_orig_med(FILE_ID, X_ORIG, Y_ORIG, IERR)
integer, parameter tetrahedron_elt_type
integer, parameter quadrangle_elt_type
subroutine set_header_med(FILE_ID, TITLE, IERR)
integer, parameter hermes_med_not_loaded_err
subroutine close_mesh_med(FILE_ID, IERR)
subroutine ifvector_(STRING, COMP_NUM, ISVECTOR)
subroutine update_data_mesh_med(FILE_ID, TIME, RECORD, NB_DIM_MESH, NPOIN, COORD, IERR)
subroutine get_mesh_nptir_med(FILE_ID, NPTIR, IERR)
subroutine get_mesh_nplan_med(FILE_ID, NPLAN, IERR)
subroutine transfer_group_info_common_med(SOURCE_ID, DEST_ID, MNAME_SRC, MNAME_DST, HAS_FAM_ON_POINT, IERR)
integer, parameter hermes_var_unknown_err
subroutine open_index(FILENAME, FILE_ID)
subroutine get_data_value_med(FILE_ID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
integer, dimension(max_file) hash
subroutine get_mesh_date_med(FILE_ID, DATE, IERR)
subroutine get_data_ntimestep_med(FILE_ID, NTIMESTEP, IERR)
integer, parameter offset
subroutine get_bnd_npoin_med(FILE_ID, TYPE_BND_ELEM, NPTFR, IERR)
subroutine get_data_time_med(FILE_ID, RECORD, TIME, IERR)
subroutine get_bnd_nelem_med(FILE_ID, TYPE_ELEM, BND_NELEM, IERR)