4 &(loc_inpfile,loc_bndfile,
5 & loc_outfile,loc_outbndfile)
27 & outfile,outfmt,outbndfile,debug
37 CHARACTER(LEN=MAXLENFILE),
INTENT(IN) :: LOC_INPFILE
38 CHARACTER(LEN=MAXLENFILE),
INTENT(IN) :: LOC_BNDFILE
39 CHARACTER(LEN=MAXLENFILE),
INTENT(IN) :: LOC_OUTFILE
40 CHARACTER(LEN=MAXLENFILE),
INTENT(IN) :: LOC_OUTBNDFILE
46 CHARACTER(LEN=80) :: TITLE
47 INTEGER :: INFID, OUTFID
49 INTEGER :: DATE2(3),TIME2(3)
50 INTEGER :: TYP_ELEM, TYP_BND_ELEM
51 INTEGER :: NPOIN,NELEM,NDP
52 INTEGER :: NPLAN, NPTIR
54 DOUBLE PRECISION,
ALLOCATABLE :: X(:),Y(:),Z(:)
55 INTEGER :: NELEBD, NPTFR, NDP_BND
56 INTEGER,
ALLOCATABLE :: IKLE(:)
57 INTEGER,
ALLOCATABLE :: IKLES(:)
58 INTEGER,
ALLOCATABLE :: IKLE_BND(:)
59 INTEGER,
ALLOCATABLE :: KNOLG(:)
60 INTEGER,
ALLOCATABLE :: IPOBO(:)
61 INTEGER,
ALLOCATABLE :: LIHBOR(:)
62 INTEGER,
ALLOCATABLE :: LIUBOR(:)
63 INTEGER,
ALLOCATABLE :: LIVBOR(:)
64 INTEGER,
ALLOCATABLE :: LITBOR(:)
65 INTEGER,
ALLOCATABLE :: COLOR(:)
66 DOUBLE PRECISION,
ALLOCATABLE :: UBOR(:),VBOR(:)
67 DOUBLE PRECISION,
ALLOCATABLE :: HBOR(:),CHBORD(:)
68 DOUBLE PRECISION,
ALLOCATABLE :: TBOR(:),ATBOR(:)
69 DOUBLE PRECISION,
ALLOCATABLE :: BTBOR(:)
70 INTEGER,
ALLOCATABLE :: NBOR(:)
73 DOUBLE PRECISION :: TIME
74 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_NAME(:)
75 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_UNIT(:)
76 CHARACTER(LEN=32),
ALLOCATABLE :: VAR_NAMES(:)
77 CHARACTER(LEN=32) :: VARNAME
78 DOUBLE PRECISION,
ALLOCATABLE :: VAR_VALUE(:)
79 INTEGER :: ITIME, IVAR
80 INTEGER :: X_ORIG, Y_ORIG
85 IF(debug)
WRITE(
lu,*)
'---FILES INFORMATION---' 86 IF(debug)
WRITE(
lu,*)
'INPUT FILE : ',
infile 87 IF(debug)
WRITE(
lu,*)
'INPUT FORMAT : ',
infmt 89 IF(debug)
WRITE(
lu,*)
'OUTPUT FILE : ',outfile
90 IF(debug)
WRITE(
lu,*)
'OUTPUT FORMAT : ',outfmt
91 IF(debug)
WRITE(
lu,*)
'OUT BOUNDARY FILE : ',outbndfile
97 CALL check_call(ierr,
'CONVERTER:OPEN_MESH:IN')
100 CALL check_call(ierr,
'CONVERTER:GET_MESH_TITLE')
102 CALL check_call(ierr,
'CONVERTER:GET_MESH_DATE')
105 CALL check_call(ierr,
'CONVERTER:GET_MESH_DIMENSION')
113 IF(
infmt(1:3).EQ.
'MED')
THEN 118 IF(ierr.NE.0.OR.nelem.EQ.0)
THEN 128 CALL check_call(ierr,
'CONVERTER:GET_MESH_NPOIN')
130 CALL check_call(ierr,
'CONVERTER:GET_MESH_NELEM')
132 CALL check_call(ierr,
'CONVERTER:GET_MESH_NDP')
134 CALL check_call(ierr,
'CONVERTER:GET_MESH_NPLAN')
136 CALL check_call(ierr,
'CONVERTER:GET_MESH_ORIG')
138 ALLOCATE(x(npoin),stat=ierr)
139 CALL check_allocate(ierr,
'X')
140 ALLOCATE(y(npoin),stat=ierr)
141 CALL check_allocate(ierr,
'Y')
145 ALLOCATE(z(npoin),stat=ierr)
146 CALL check_allocate(ierr,
'Z')
150 ALLOCATE(ikle(nelem*ndp),stat=ierr)
151 CALL check_allocate(ierr,
'IKLE')
153 & ikle,nelem,ndp,ierr)
154 CALL check_call(ierr,
'CONVERTER:GET_MESH_CONNECTIVITY')
157 CALL check_call(ierr,
'CONVERTER:GET_MESH_NPTIR')
160 ALLOCATE(knolg(npoin),stat=ierr)
161 CALL check_allocate(ierr,
'KNOLG')
164 CALL check_call(ierr,
'CONVERTER:GET_MESH_L2G_NUMBERING')
169 ALLOCATE(ipobo(npoin),stat=ierr)
170 CALL check_allocate(ierr,
'IPOBO')
175 CALL check_call(ierr,
'CONVERT:OPEN_BND:IN')
178 CALL check_call(ierr,
'CONVERT:GET_BND_NPOIN')
180 CALL check_call(ierr,
'CONVERT:GET_BND_NPOIN')
184 CALL check_call(ierr,
'CONVERT:GET_BND_IPOBO')
186 ALLOCATE(nbor(nptfr),stat=ierr)
187 CALL check_allocate(ierr,
'NBOR')
189 CALL check_call(ierr,
'CONVERT:GET_BND_NUMBERING')
191 ALLOCATE(ikle_bnd(nelebd*ndp_bnd),stat=ierr)
192 CALL check_allocate(ierr,
'IKLE_BND')
194 & nelebd,ndp_bnd,ikle_bnd,ierr)
195 CALL check_call(ierr,
'CONVERT:GET_BND_CONNECTIVITY')
197 ALLOCATE(lihbor(nptfr),stat=ierr)
198 CALL check_allocate(ierr,
'LIHBOR')
199 ALLOCATE(liubor(nptfr),stat=ierr)
200 CALL check_allocate(ierr,
'LIUBOR')
201 ALLOCATE(livbor(nptfr),stat=ierr)
202 CALL check_allocate(ierr,
'LIVBOR')
203 ALLOCATE(litbor(nptfr),stat=ierr)
204 CALL check_allocate(ierr,
'LITBOR')
205 ALLOCATE(hbor(nptfr),stat=ierr)
206 CALL check_allocate(ierr,
'HBOR')
207 ALLOCATE(ubor(nptfr),stat=ierr)
208 CALL check_allocate(ierr,
'UBOR')
209 ALLOCATE(vbor(nptfr),stat=ierr)
210 CALL check_allocate(ierr,
'VBOR')
211 ALLOCATE(tbor(nptfr),stat=ierr)
212 CALL check_allocate(ierr,
'TBOR')
213 ALLOCATE(atbor(nptfr),stat=ierr)
214 CALL check_allocate(ierr,
'ATBOR')
215 ALLOCATE(btbor(nptfr),stat=ierr)
216 CALL check_allocate(ierr,
'BTBOR')
217 ALLOCATE(chbord(nptfr),stat=ierr)
218 CALL check_allocate(ierr,
'CHBORD')
219 ALLOCATE(color(nptfr),stat=ierr)
220 CALL check_allocate(ierr,
'COLOT')
223 & lihbor,liubor, livbor,hbor,ubor,vbor,
224 & chbord,.true., litbor,tbor,atbor,btbor,
226 CALL check_call(ierr,
'CONVERT:GET_BND_VALUE')
229 CALL check_call(ierr,
'CONVERT:GET_BND_COLOR')
232 CALL check_call(ierr,
'CONVERT:CLOSE_BND:IN')
240 CALL check_call(ierr,
'CONVERT:GET_DATA_NTIMESTEP')
243 CALL check_call(ierr,
'CONVERT:GET_DATA_NVAR')
245 ALLOCATE(var_name(nvar),stat=ierr)
246 CALL check_allocate(ierr,
'VAR_NAME')
247 ALLOCATE(var_unit(nvar),stat=ierr)
248 CALL check_allocate(ierr,
'VAR_UNIT')
249 ALLOCATE(var_names(nvar),stat=ierr)
250 CALL check_allocate(ierr,
'VAR_NAME')
253 CALL check_call(ierr,
'CONVERT:GET_DATA_VAR_LIST')
255 var_names(i)(1:16) = var_name(i)
256 var_names(i)(17:32) = var_unit(i)
259 CALL open_mesh(outfmt,loc_outfile,outfid,
'WRITE ',ierr)
260 CALL check_call(ierr,
'CONVERTER:OPEN_MESH:OUT')
263 CALL open_bnd(outfmt,loc_outbndfile,outfid,
'WRITE ',ierr)
264 CALL check_call(ierr,
'CONVERTER:OPEN_BND:OUT')
267 CALL set_header(outfmt,outfid,title,nvar,var_names,ierr)
268 CALL check_call(ierr,
'CONVERTER:SET_HEADER')
269 DEALLOCATE(var_names)
277 ALLOCATE(ikles(nelem*ndp),stat=ierr)
278 CALL check_allocate(ierr,
'IKLES')
281 ikles(i+(j-1)*nelem) = ikle((i-1)*ndp+j)
287 CALL set_mesh(outfmt,outfid,ndim,typ_elem,ndp,nptfr,nptir,
288 & nelem,npoin,ikles,ipobo,knolg,x,y,nplan,
289 & date2,time2,x_orig,y_orig,ierr)
291 CALL set_mesh(outfmt,outfid,ndim,typ_elem,ndp,nptfr,nptir,
292 & nelem,npoin,ikles,ipobo,knolg,x,y,nplan,
293 & date2,time2,x_orig,y_orig,ierr,z)
295 CALL check_call(ierr,
'CONVERTER:SET_MESH')
306 IF (outfmt(1:7).EQ.
'SERAFIN')
THEN 308 ALLOCATE(ikle_bnd(nptfr),stat=ierr)
309 CALL check_allocate(ierr,
'IKLE_BND')
315 CALL set_bnd(outfmt,outfid,typ_bnd_elem,nelebd,ndp_bnd,
316 & ikle_bnd,nptfr,lihbor,liubor,livbor,hbor,ubor,
317 & vbor,chbord,litbor,tbor,atbor,btbor,color,ierr)
318 CALL check_call(ierr,
'CONVERTER:SET_BND')
333 ALLOCATE(var_value(npoin),stat=ierr)
334 CALL check_allocate(ierr,
'VAR_VALUES')
337 CALL check_call(ierr,
'CONVERTER:GET_DATA_TIME')
340 & var_value,npoin,ierr)
341 CALL check_call(ierr,
'CONVERTER:GET_DATA_VALUE')
343 varname(1:16) = var_name(ivar)
344 varname(17:32) = var_unit(ivar)
345 CALL add_data(outfmt,outfid,varname,time,itime-1,
346 & ivar==1,var_value,npoin,ierr)
347 CALL check_call(ierr,
'CONVERTER:ADD_DATA')
350 DEALLOCATE(var_value)
354 CALL check_call(ierr,
'CONVERTER:CLOSE_BND:OUT')
357 CALL check_call(ierr,
'CONVERTER:CLOSE_MESH:IN')
359 CALL check_call(ierr,
'CONVERTER:CLOSE_MESH:OUT')
subroutine get_mesh_nptir(FFORMAT, FID, NPTIR, IERR)
subroutine get_mesh_npoin(FFORMAT, FID, TYP_ELEM, NPOIN, IERR)
subroutine get_bnd_npoin(FFORMAT, FID, TYPE_BND_ELEM, NPTFR, IERR)
subroutine get_mesh_orig(FFORMAT, FID, X_ORIG, Y_ORIG, IERR)
subroutine add_data(FFORMAT, FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
integer, parameter prism_elt_type
subroutine close_mesh(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
subroutine get_bnd_connectivity(FFORMAT, FID, TYP_BND_ELEM, NELEBD, NDP, IKLE_BND, IERR)
subroutine set_mesh(FFORMAT, FILE_ID, MESH_DIM, TYPELM, NDP, NPTFR, NPTIR, NELEM, NPOIN, IKLE, IPOBO, KNOLG, X, Y, NPLAN, DATE, TIME, X_ORIG, Y_ORIG, IERR, Z, IN_PLACE)
subroutine get_data_nvar(FFORMAT, FID, NVAR, IERR)
subroutine get_bnd_color(FFORMAT, FID, TYP_BND_ELEM, NELEBD, COLOR, IERR)
subroutine get_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
subroutine get_bnd_ipobo(FFORMAT, FID, NPOIN, NELEBD, TYP_BND_ELEM, IPOBO, IERR)
integer, parameter triangle_elt_type
character(len=maxlenfile) boundfile
subroutine get_bnd_nelem(FFORMAT, FID, TYPE_BND_ELEM, NELEM, IERR)
subroutine close_bnd(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
integer, parameter point_bnd_elt_type
subroutine get_data_value(FFORMAT, FID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
character(len=maxlenfile) infile
subroutine get_mesh_nelem(FFORMAT, FID, TYP_ELEM, NELEM, IERR)
subroutine get_mesh_npoin_per_element(FFORMAT, FID, TYP_ELEM, NDP, IERR)
subroutine get_mesh_dimension(FFORMAT, FID, NDIM, IERR)
integer, parameter edge_bnd_elt_type
subroutine get_mesh_title(FFORMAT, FID, TITLE, IERR)
subroutine get_bnd_numbering(FFORMAT, FID, TYP_BND_ELEM, NPTFR, NBOR, IERR)
subroutine get_mesh_date(FFORMAT, FID, DATE, IERR)
subroutine converter(LOC_INPFILE, LOC_BNDFILE, LOC_OUTFILE, LOC_OUTBNDFILE)
subroutine get_mesh_nplan(FFORMAT, FID, NPLAN, IERR)
subroutine get_mesh_coord(FFORMAT, FID, JDIM, NDIM, NPOIN, COORD, IERR)
subroutine set_bnd(FFORMAT, FID, TYPE_BND_ELT, NELEBD, NDP, IKLE, NPTFR, LIHBOR, LIUBOR, LIVBOR, HBOR, UBOR, VBOR, CHBORD, LITBOR, TBOR, ATBOR, BTBOR, COLOR, IERR)
subroutine 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_time(FFORMAT, FID, RECORD, TIME, IERR)
subroutine get_mesh_l2g_numbering(FFORMAT, FID, KNOLG, NPOIN, IERR)
subroutine get_data_ntimestep(FFORMAT, FID, NTIMESTEP, IERR)