4 &(geo,geoformat,bnd,res,resformat,nproc,nplan_res,method)
45 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: GEO
46 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: BND
47 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: RES
48 CHARACTER(LEN=8),
INTENT(INOUT) :: GEOFORMAT,RESFORMAT
49 INTEGER,
INTENT(IN) :: NPROC
50 INTEGER,
INTENT(INOUT) :: NPLAN_RES
51 INTEGER,
INTENT(IN) :: METHOD
57 INTEGER NPLAN_GEO,NELEM_GEO,NDP,NELEBD, NPTFR, NPTIR
58 INTEGER :: NDIM, X_ORIG, Y_ORIG
60 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: IPOBO_GEO,IPOBO3D
61 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KNOLG, TMP2
62 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKLE_GEO,IKLE3D
63 INTEGER,
DIMENSION(:),
ALLOCATABLE :: IKLE_BND
65 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: TMP, X, Y
67 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: X3D, Y3D, Z3D
69 CHARACTER(LEN=300) :: RESPAR
71 CHARACTER(LEN=80) TITSEL
72 CHARACTER(LEN=32),
ALLOCATABLE :: TEXTELU(:)
73 CHARACTER(LEN=16),
ALLOCATABLE :: VAR_NAME(:), VAR_UNIT(:)
74 CHARACTER(LEN=16) :: VARNAME
75 CHARACTER(LEN=11) EXTENS
79 INTEGER IERR, NRES, NRESPAR, NGEO
80 INTEGER TYP_ELEM, TYP_BND_ELEM
81 INTEGER DATE(3), TIME(3)
83 INTEGER NPOIN_GEO, NPOIN_RES, NPOIN_PAR
84 INTEGER NVAR_RES,NVAR_GEO
85 INTEGER NPOIN3D, NELEM3D
103 respar = trim(res) // extens(nproc-1,0)
104 CALL open_mesh(resformat,respar,nrespar,
'READ ',ierr)
105 CALL check_call(ierr,
"GRETEL:OPEN_MESH:RESPAR")
108 CALL open_mesh(resformat,res,nres,
'WRITE ',ierr)
109 CALL check_call(ierr,
"GRETEL:OPEN_MESH:RES")
113 CALL check_call(ierr,
"GRETEL:GET_MESH_TITLE")
117 CALL check_call(ierr,
"GRETEL:GET_DATA_NVAR")
119 ALLOCATE(textelu(nvar_res),stat=ierr)
120 CALL check_allocate(ierr,
'GRETEL:TEXTELU')
121 ALLOCATE(var_name(nvar_res),stat=ierr)
122 CALL check_allocate(ierr,
'GRETEL:VAR_NAME')
123 ALLOCATE(var_unit(nvar_res),stat=ierr)
124 CALL check_allocate(ierr,
'GRETEL:VAR_UNIT')
128 CALL check_call(ierr,
"GRETEL:GET_DATA_VAR_LIST")
130 WRITE(
lu,*)
'TITLE=',titsel
131 WRITE(
lu,*)
'NBVAR=',nvar_res
133 textelu(i)(1:16) = var_name(i)
134 textelu(i)(17:32) = var_unit(i)
135 WRITE(
lu,*)
'VARIABLE ',i,
' : ',textelu(i)
144 CALL check_call(ierr,
"GRETEL:MESH_NPLAN")
148 CALL check_call(ierr,
"GRETEL:GET_DATA_NTIMESTEP")
151 CALL check_call(ierr,
"GRETEL:CLOSE_MESH:RESPAR")
153 CALL set_header(resformat,nres,titsel,nvar_res,textelu,ierr)
157 CALL open_mesh(geoformat,geo,ngeo,
'READ ',ierr)
158 CALL check_call(ierr,
"GRETEL:OPEN_MESH:GEO")
162 CALL open_bnd(geoformat,bnd,ngeo,
'READ ',ierr)
163 CALL check_call(ierr,
"GRETEL:OPEN_BND:GEO")
166 & typ_elem,nelem_geo,nptfr,nptir,ndp,nplan_geo,
167 & x_orig,y_orig,typ_bnd_elem,nelebd)
169 WRITE(
lu,*)
'GEO MESH INFORMATIONS:' 170 WRITE(
lu,*)
'NELEM=',nelem_geo
171 WRITE(
lu,*)
'NPOIN=',npoin_geo
172 WRITE(
lu,*)
'NDP=',ndp
173 WRITE(
lu,*)
'TYP_ELEM=',typ_elem
175 ALLOCATE(ikle_geo(nelem_geo*ndp),stat=ierr)
176 CALL check_allocate(ierr,
'GRETEL:IKLE_GEO')
177 ALLOCATE(ipobo_geo(npoin_geo),stat=ierr)
178 CALL check_allocate(ierr,
'GRETEL:IPOBO')
181 & ndp,typ_bnd_elem,nelebd,ikle_geo, ipobo_geo)
183 IF(nplan_res.LE.1)
THEN 189 ALLOCATE(x(npoin_geo),stat=ierr)
190 CALL check_allocate(ierr,
'GRETEL:X')
191 ALLOCATE(y(npoin_geo),stat=ierr)
192 CALL check_allocate(ierr,
'GRETEL:Y')
193 ALLOCATE(z3d(npoin_geo*nplan_res),stat=ierr)
194 CALL check_allocate(ierr,
'GRETEL:Z3D')
197 CALL check_call(ierr,
'GRETEL:GET_MESH_COORD:X:GEO')
199 CALL check_call(ierr,
'GRETEL:GET_MESH_COORD:Y:GEO')
205 respar = trim(res) // extens(nproc-1,ipid)
206 CALL open_mesh(resformat,respar,nrespar,
'READ ',ierr)
207 CALL check_call(ierr,
"GRETEL:OPEN_MESH:RESPAR2")
210 CALL check_call(ierr,
"GRETEL:GET_MESH_NPOIN:RESPAR")
212 ALLOCATE(knolg(npoin_par),stat=ierr)
213 CALL check_allocate(ierr,
'GRETEL:KNOLG')
214 ALLOCATE(tmp(npoin_par),stat=ierr)
215 CALL check_allocate(ierr,
'GRETEL:TMP')
219 CALL check_call(ierr,
'GRETEL:GET_MESH_L2G_NUMBERING:RESPAR')
222 CALL check_call(ierr,
'GRETEL:GET_MESH_COORD:X:RESPAR')
223 DO i=1,npoin_par/(max(nplan_res,1))
227 CALL check_call(ierr,
'GRETEL:GET_MESH_COORD:Y:RESPAR')
228 DO i=1,npoin_par/(max(nplan_res,1))
233 varname = textelu(1)(1:16)
237 z3d(knolg(i)) = tmp(i)
242 CALL check_call(ierr,
'GRETEL:GET_MESH_DATE;RESPAR')
244 date(i) = date_tmp(i)
245 time(i) = date_tmp(i+3)
249 CALL check_call(ierr,
'GRETEL:CLOSEMESH:RESPAR')
256 WRITE(
lu,*)
'WRITING MESH' 259 ALLOCATE(tmp2(nelem_geo*ndp),stat=ierr)
260 CALL check_allocate(ierr,
'GRETEL:TMP0')
262 DO ielem = 1,nelem_geo
263 tmp2((i-1)*nelem_geo + ielem) = ikle_geo((ielem-1)*ndp+i)
267 CALL set_mesh(resformat,nres,2,typ_elem,ndp,nptfr,nptir,
268 & nelem_geo,npoin_geo,tmp2,ipobo_geo,ipobo_geo,x,y,
269 & nplan_res,date,time,x_orig,y_orig,ierr,
271 CALL check_call(ierr,
'GRETEL:SET_MESH:RES')
274 DEALLOCATE(ipobo_geo)
277 npoin_res = npoin_geo
282 npoin3d = npoin_geo * nplan_res
283 nelem3d = nelem_geo * (nplan_res-1)
287 ALLOCATE(ikle3d(nelem3d*ndp),stat=ierr)
288 CALL check_allocate(ierr,
'GRETEL:IKLE3D')
289 ALLOCATE(ipobo3d(npoin3d),stat=ierr)
290 CALL check_allocate(ierr,
'GRETEL:IPOBO3D')
295 ikle3d(j+(i-1)*nelem_geo + (0*nelem3d)) =
296 & ikle_geo((j-1)*3+1) + (i-1)*npoin_geo
297 ikle3d(j+(i-1)*nelem_geo + (1*nelem3d)) =
298 & ikle_geo((j-1)*3+2) + (i-1)*npoin_geo
299 ikle3d(j+(i-1)*nelem_geo + (2*nelem3d)) =
300 & ikle_geo((j-1)*3+3) + (i-1)*npoin_geo
301 ikle3d(j+(i-1)*nelem_geo + (3*nelem3d)) =
302 & ikle_geo((j-1)*3+1) + (i)*npoin_geo
303 ikle3d(j+(i-1)*nelem_geo + (4*nelem3d)) =
304 & ikle_geo((j-1)*3+2) + (i)*npoin_geo
305 ikle3d(j+(i-1)*nelem_geo + (5*nelem3d)) =
306 & ikle_geo((j-1)*3+3) + (i)*npoin_geo
315 DEALLOCATE(ipobo_geo)
317 ALLOCATE(x3d(npoin_geo*nplan_res),stat=ierr)
318 CALL check_allocate(ierr,
'GRETEL:X3D')
319 ALLOCATE(y3d(npoin_geo*nplan_res),stat=ierr)
320 CALL check_allocate(ierr,
'GRETEL:Y3D')
324 x3d(i+(j-1)*npoin_geo) = x(i)
325 y3d(i+(j-1)*npoin_geo) = y(i)
332 CALL set_mesh(resformat,nres,3,typ_elem,ndp,nptfr,nptir,nelem3d,
333 & npoin3d,ikle3d,ipobo3d,ipobo3d,x3d,y3d,
334 & nplan_res,date,time,x_orig,y_orig,ierr,
335 & z=z3d,in_place=.true.)
336 CALL check_call(ierr,
'GRETEL:SET_MESH:RES')
347 IF(geoformat.EQ.resformat)
THEN 348 ALLOCATE(ikle_bnd(nelebd*2), stat=ierr)
351 CALL check_call(ierr,
'GRETEL:GET_BND_CONNECTIVITY:GEO')
354 & typ_bnd_elem,ikle_bnd,nelebd,2,.true.,.true.,ierr)
355 CALL check_call(ierr,
'GRETEL:TRANSFER_GROUP_INFO:GEO')
362 &(npoin_res, nvar_res, ntimestep_res, nproc, resformat, nres,
363 & typ_elem, textelu, res, ndim, nplan_res, npoin_geo, method)
367 CALL check_call(ierr,
'GRETEL:CLOSEMESH:RES')
369 CALL check_call(ierr,
'GRETEL:CLOSE_BND:GEO')
371 CALL check_call(ierr,
'GRETEL:CLOSE_MESH:GEO')
374 WRITE(
lu,*)
'END OF PROGRAM, ',ntimestep_res,
' DATASETS FOUND' subroutine get_mesh_npoin(FFORMAT, FID, TYP_ELEM, NPOIN, IERR)
subroutine transfer_group_info(FFORMAT, FID, FID2, TYPE_ELT, TYPE_BND_ELT, IKLE_BND, NELEBD, NDP, TRANS_ELEM, TRANS_POINT, 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_data_var_list(FFORMAT, FID, NVAR, VARLIST, UNITLIST, IERR)
subroutine gretel_autop(GEO, GEOFORMAT, BND, RES, RESFORMAT, NPROC, NPLAN_RES, METHOD)
subroutine close_bnd(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
subroutine get_data_value(FFORMAT, FID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
subroutine read_mesh_info(FFORMAT, NFIC, TITLE, NVAR, NPOIN, TYP_ELEM, NELEM, NPTFR, NPTIR, NDP, NPLAN, X_ORIG, Y_ORIG, TYP_BND_ELEM, NELEBD)
subroutine get_mesh_title(FFORMAT, FID, TITLE, IERR)
subroutine get_mesh_date(FFORMAT, FID, DATE, IERR)
subroutine get_mesh_nplan(FFORMAT, FID, NPLAN, IERR)
subroutine get_mesh_coord(FFORMAT, FID, JDIM, NDIM, NPOIN, COORD, IERR)
subroutine read_mesh_conn(FFORMAT, NFIC, NPOIN, TYP_ELEM, NELEM, NDP, TYP_BND_ELEM, NELEBD, IKLE, IPOBO)
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_mesh_l2g_numbering(FFORMAT, FID, KNOLG, NPOIN, IERR)
subroutine get_data_ntimestep(FFORMAT, FID, NTIMESTEP, IERR)
subroutine merge_data(NPOIN_RES, NVAR_RES, NTIMESTEP_RES, NPROC, RESFORMAT, NRES, TYP_ELEM, TEXTELU, RES, NDIM, NPLAN_RES, NPOIN_GEO, METHOD)