4 &(npoin_res, nvar_res, ntimestep_res, nproc, resformat, nres,
5 & typ_elem, textelu, res, ndim, nplan_res, npoin_geo, method)
42 INTEGER,
INTENT(IN) :: NPOIN_RES, NPOIN_GEO, NVAR_RES
43 INTEGER,
INTENT(IN) :: NPLAN_RES, NTIMESTEP_RES, NPROC
44 CHARACTER(LEN=8),
INTENT(INOUT) :: RESFORMAT
45 INTEGER,
INTENT(IN) :: NRES, NDIM
46 INTEGER,
INTENT(IN) :: TYP_ELEM
47 CHARACTER(LEN=32),
INTENT(IN) :: TEXTELU(nvar_res)
48 CHARACTER(LEN=PATH_LEN),
INTENT(IN) :: RES
49 INTEGER,
INTENT(IN) :: METHOD
53 INTEGER :: I, J, IERR, IVAR
54 INTEGER :: ITIME, IPID
57 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KNOLG
58 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: TMP
60 CHARACTER(LEN=16) :: VARNAME
61 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: RESDATA
62 DOUBLE PRECISION,
DIMENSION(:,:,:),
ALLOCATABLE :: RESDATA2
63 DOUBLE PRECISION,
DIMENSION(:),
ALLOCATABLE :: TIMES
64 CHARACTER(LEN=PATH_LEN) :: RESPAR
65 CHARACTER(LEN=11) EXTENS
69 ALLOCATE(resdata(npoin_res,nvar_res),stat=ierr)
70 CALL check_allocate(ierr,
'GRETEL:RESDATE')
72 DO itime=0,ntimestep_res-1
75 respar = trim(res) // extens(nproc-1,ipid)
76 CALL open_mesh(resformat,respar,nrespar,
'READ ',ierr)
77 CALL check_call(ierr,
"GRETEL:OPEN_MESH:RESPAR2")
81 CALL check_call(ierr,
"GRETEL:GET_MESH_NPOIN:RESPAR")
83 ALLOCATE(knolg(npoin_par),stat=ierr)
84 CALL check_allocate(ierr,
'GRETEL:KNOLG')
85 ALLOCATE(tmp(npoin_par),stat=ierr)
86 CALL check_allocate(ierr,
'GRETEL:TMP')
90 CALL check_call(ierr,
'GRETEL:GET_DATA_TIME:RESPAR')
95 CALL check_call(ierr,
'GRETEL:GET_MESH_L2G_NUMBERING:RESPAR')
99 varname = textelu(ivar)(1:16)
103 CALL check_call(ierr,
'GRETEL:GET_DATA_VALUE')
107 resdata(knolg(i),ivar) = tmp(i)
111 DO i=1,npoin_par/nplan_res
113 resdata(knolg(i) + (j-1)*npoin_geo, ivar) =
114 & tmp(i + (j-1)*npoin_par/nplan_res)
120 CALL check_call(ierr,
'GRETEL:CLOSEMESH:RESPAR')
125 WRITE(
lu,*)
'WRITING DATASET NO.',itime,
' TIME =',
REAL(at)
128 CALL add_data(resformat,nres,textelu(i),at,itime,i.EQ.1,
129 & resdata(:,i),npoin_res,ierr)
130 CALL check_call(ierr,
'GRETEL:ADD_DATA:RES')
135 ELSEIF (method.EQ.2)
THEN 136 ALLOCATE(resdata2(npoin_res,nvar_res,ntimestep_res),stat=ierr)
137 CALL check_allocate(ierr,
'GRETEL:RESDATA2')
138 ALLOCATE(times(ntimestep_res),stat=ierr)
139 CALL check_allocate(ierr,
'GRETEL:times')
143 respar = trim(res) // extens(nproc-1,ipid)
144 CALL open_mesh(resformat,respar,nrespar,
'READ ',ierr)
145 CALL check_call(ierr,
"GRETEL:OPEN_MESH:RESPAR2")
149 CALL check_call(ierr,
"GRETEL:GET_MESH_NPOIN:RESPAR")
151 ALLOCATE(knolg(npoin_par),stat=ierr)
152 CALL check_allocate(ierr,
'GRETEL:KNOLG')
153 ALLOCATE(tmp(npoin_par),stat=ierr)
154 CALL check_allocate(ierr,
'GRETEL:TMP')
159 CALL check_call(ierr,
'GRETEL:GET_MESH_L2G_NUMBERING:RESPAR')
161 DO itime=0,ntimestep_res-1
165 & times(itime+1),ierr)
166 CALL check_call(ierr,
'GRETEL:GET_DATA_TIME:RESPAR')
169 varname = textelu(ivar)(1:16)
173 CALL check_call(ierr,
'GRETEL:GET_DATA_VALUE')
177 resdata2(knolg(i),ivar,itime+1) = tmp(i)
181 DO i=1,npoin_par/nplan_res
183 resdata2(knolg(i) + (j-1)*npoin_geo, ivar, itime+1)=
184 & tmp(i + (j-1)*npoin_par/nplan_res)
191 CALL check_call(ierr,
'GRETEL:CLOSEMESH:RESPAR')
196 DO itime=0,ntimestep_res-1
198 WRITE(
lu,*)
'WRITING DATASET NO.',itime,
' TIME =',
199 &
REAL(times(itime+1))
202 CALL add_data(resformat,nres,textelu(i),times(itime+1),
204 & resdata2(:,i,itime+1),npoin_res,ierr)
205 CALL check_call(ierr,
'GRETEL:ADD_DATA:RES')
212 WRITE(
lu,*)
'UNKOWN METHOD:',method
subroutine get_mesh_npoin(FFORMAT, FID, TYP_ELEM, NPOIN, IERR)
subroutine add_data(FFORMAT, FILE_ID, VAR_NAME, TIME, RECORD, FIRST_VAR, VAR_VALUE, N, IERR)
subroutine close_mesh(FFORMAT, FILE_ID, IERR, MESH_NUMBER)
subroutine get_data_value(FFORMAT, FID, RECORD, VAR_NAME, RES_VALUE, N, IERR)
subroutine open_mesh(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 merge_data(NPOIN_RES, NVAR_RES, NTIMESTEP_RES, NPROC, RESFORMAT, NRES, TYP_ELEM, TEXTELU, RES, NDIM, NPLAN_RES, NPOIN_GEO, METHOD)