libsim Versione 7.2.6

◆ 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 )

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 1170 del file volgrid6d_class.F90.

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

Generated with Doxygen.