libsim  Versione8.0.0

◆ export_to_gridinfo()

subroutine volgrid6d_class::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 1187 del file volgrid6d_class.F90.

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 
1244 ENDDO
1245 
1246 IF (ltime_definition == 1 .OR. ltime_definition == 2) DEALLOCATE(correctedtime)
1247 IF (ltime_definition == 2) DEALLOCATE(correctedtimerange)
1248 
1249 DO i = 1, gridinfov%arraysize
1250 
1251 #ifdef DEBUG
1252  CALL l4f_category_log(category,l4f_debug,"import from gridinfov index: "//t2c(i))
1253  CALL l4f_category_log(category,l4f_info, &

Generated with Doxygen.