libsim Versione 8.0.0

◆ export_to_gridinfo()

subroutine export_to_gridinfo ( type(volgrid6d), intent(in) this,
type(gridinfo_def), intent(inout) gridinfo,
integer itime,
integer itimerange,
integer ilevel,
integer ivar,
type(grid_id), intent(in), optional gaid_template,
logical, intent(in), optional clone )
private

Export a single grid of a volgrid6d object to a gridinfo_def object.

A single 2d slice of a volgrid6d at a specified location is written into a gridinfo_def object, including the grid_id which can be used for the successive export to file.

Parametri
[in]thisvolume to be exported
[in,out]gridinfooutput gridinfo_def object
itimeindex within this of the element to be exported for the time dimension
itimerangeindex within this of the element to be exported for the timerange dimension
ilevelindex within this of the element to be exported for the vertical level dimension
ivarindex within this of the element to be exported for the variable dimension
[in]gaid_templategrid_id template to be used for output data replacing the one contained in this
[in]cloneif provided and .TRUE., clone the grid_id included in this rather than making a shallow copy

Definizione alla linea 1175 del file volgrid6d_class.F90.

1177 ntime = count_distinct(correctedtime, &
1178 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1179 .AND. .NOT.isanavar(:), back=.true.)
1180 ELSE
1181 ntime = count_distinct(gridinfov%array(1:gridinfov%arraysize)%time, &
1182 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1183 .AND. .NOT.isanavar(:), back=.true.)
1184 ENDIF
1185 IF (ltime_definition == 2) THEN ! set all to analysis
1186 ntimerange = count_distinct(correctedtimerange, &
1187 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1188 .AND. .NOT.isanavar(:), back=.true.)
1189 ELSE
1190 ntimerange = count_distinct(gridinfov%array(1:gridinfov%arraysize)%timerange, &
1191 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1192 .AND. .NOT.isanavar(:), back=.true.)
1193 ENDIF
1194 nlevel = count_distinct(gridinfov%array(1:gridinfov%arraysize)%level, &
1195 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim), &
1196 back=.true.)
1197 nvar = count_distinct(gridinfov%array(1:gridinfov%arraysize)%var, &
1198 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim), &
1199 back=.true.)
1200
1201#ifdef DEBUG
1202 CALL l4f_category_log(this(i)%category,l4f_debug,"alloc volgrid6d index: "//t2c(i))
1203#endif
1204
1205 CALL volgrid6d_alloc(this(i),this(i)%griddim%dim,ntime=ntime, &
1206 ntimerange=ntimerange,nlevel=nlevel,nvar=nvar)
1207
1208 IF (ltime_definition == 1 .OR. ltime_definition == 2) THEN ! verification time
1209 this(i)%time = pack_distinct(correctedtime, ntime, &
1210 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1211 .AND. .NOT.isanavar(:), back=.true.)
1212 ELSE
1213 this(i)%time = pack_distinct(gridinfov%array(1:gridinfov%arraysize)%time, ntime, &
1214 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1215 .AND. .NOT.isanavar(:), back=.true.)
1216 ENDIF
1217 CALL sort(this(i)%time)
1218
1219 IF (ltime_definition == 2) THEN ! set all to analysis
1220 this(i)%timerange = pack_distinct(correctedtimerange, ntimerange, &
1221 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1222 .AND. .NOT.isanavar(:), back=.true.)
1223 ELSE
1224 this(i)%timerange = pack_distinct(gridinfov%array(1:gridinfov%arraysize)%timerange, &
1225 ntimerange, mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim) &
1226 .AND. .NOT.isanavar(:), back=.true.)
1227 ENDIF
1228 CALL sort(this(i)%timerange)
1229
1230 this(i)%level=pack_distinct(gridinfov%array(1:gridinfov%arraysize)%level, &
1231 nlevel,mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim), &
1232 back=.true.)
1233 CALL sort(this(i)%level)
1234
1235 this(i)%var=pack_distinct(gridinfov%array(1:gridinfov%arraysize)%var, nvar, &
1236 mask=(this(i)%griddim == gridinfov%array(1:gridinfov%arraysize)%griddim), &
1237 back=.true.)
1238
1239#ifdef DEBUG
1240 CALL l4f_category_log(this(i)%category,l4f_debug,"alloc_vol volgrid6d index: "//t2c(i))
1241#endif
1242 CALL volgrid6d_alloc_vol(this(i), decode=decode)
1243

Generated with Doxygen.