|
◆ import_from_gridinfovv()
subroutine volgrid6d_class::import_from_gridinfovv |
( |
type(volgrid6d), dimension(:), pointer |
this, |
|
|
type(arrayof_gridinfo), intent(in) |
gridinfov, |
|
|
integer, intent(in), optional |
dup_mode, |
|
|
logical, intent(in), optional |
clone, |
|
|
logical, intent(in), optional |
decode, |
|
|
integer, intent(in), optional |
time_definition, |
|
|
character(len=*), dimension(:), intent(in), optional |
anavar, |
|
|
character(len=*), intent(in), optional |
categoryappend |
|
) |
| |
|
private |
Import an array of gridinfo objects into an array of volgrid6d objects.
This method imports an array of gridded fields from an arrayof_gridinfo object into a suitable number of volgrid6d objects. The number of volgrid6d allocated is determined by the number of different grids encountered in arrayof_gridinfo. Unlike the import for a single gridinfo, here the volgrid6d object is a non-associated pointer to a 1-d array of uninitialized objects, and all the dimension descriptors in each of the objects are allocated and assigned within the method according to the data contained in gridinfov. If the anavar array argument is provided, all the input messages whose variable maps to one of the B-table variables contained in anavar are treated as time-independent (AKA anagraphic data, station data, etc.), thus their time and timerange are ignored and they are replicated for every time and timerange present in the corresponding data volume. - Parametri
-
| this | object in which to import |
[in] | gridinfov | array of gridinfo objects to be imported |
[in] | dup_mode | determines the behavior in case of duplicate metadata: if dup_mode is not provided or 0, a duplicate field overwrites, if dup_mode is 1, duplicate fields are merged with priority to the last |
[in] | clone | if provided and .TRUE. , clone the gaid's from gridinfo to this |
[in] | decode | if provided and .FALSE. the data volume in the elements of this is not allocated and successive work will be performed on grid_id's |
[in] | time_definition | 0=time is reference time; 1=time is validity time |
[in] | anavar | list of variables (B-table code equivalent) to be treated as time-independent data |
[in] | categoryappend | append this suffix to log4fortran namespace category |
Definizione alla linea 1269 del file volgrid6d_class.F90.
1271 TYPE(grid_id), INTENT(in), OPTIONAL :: gaid_template
1272 LOGICAL, INTENT(in), OPTIONAL :: clone
1274 INTEGER :: i ,itime, itimerange, ilevel, ivar
1275 INTEGER :: ntime, ntimerange, nlevel, nvar
1276 TYPE(gridinfo_def) :: gridinfol
1279 CALL l4f_category_log(this%category,l4f_debug, "start export_to_gridinfov")
1285 CALL dealloc(this%griddim%dim)
1288 ntime= size(this%time)
1289 ntimerange= size(this%timerange)
1290 nlevel= size(this%level)
1294 DO itimerange=1,ntimerange
1298 CALL init(gridinfol)
1299 CALL export(this, gridinfol, itime, itimerange, ilevel, ivar, &
1300 gaid_template=gaid_template, clone=clone)
1301 IF (c_e(gridinfol%gaid)) THEN
1302 CALL insert(gridinfov, gridinfol)
1304 CALL delete(gridinfol)
1312 END SUBROUTINE export_to_gridinfov
1320 SUBROUTINE export_to_gridinfovv(this, gridinfov, gaid_template, clone)
1323 TYPE(volgrid6d), INTENT(inout) :: this(:)
1324 TYPE(arrayof_gridinfo), INTENT(inout) :: gridinfov
1325 TYPE(grid_id), INTENT(in), OPTIONAL :: gaid_template
1326 LOGICAL, INTENT(in), OPTIONAL :: clone
1330 DO i = 1, SIZE(this)
1332 CALL l4f_category_log(this(i)%category,l4f_debug, &
1333 "export_to_gridinfovv grid index: "//t2c(i))
1335 CALL export(this(i), gridinfov, gaid_template=gaid_template, clone=clone)
1338 END SUBROUTINE export_to_gridinfovv
1350 SUBROUTINE volgrid6d_import_from_file(this, filename, dup_mode, decode, &
1351 time_definition, anavar, categoryappend)
1352 TYPE(volgrid6d), POINTER :: this(:)
1353 CHARACTER(len=*), INTENT(in) :: filename
1354 INTEGER, INTENT(in), OPTIONAL :: dup_mode
1355 LOGICAL, INTENT(in), OPTIONAL :: decode
1356 INTEGER, INTENT(IN), OPTIONAL :: time_definition
1357 CHARACTER(len=*), INTENT(IN), OPTIONAL :: anavar(:)
1358 character(len=*), INTENT(in), OPTIONAL :: categoryappend
1360 TYPE(arrayof_gridinfo) :: gridinfo
1362 CHARACTER(len=512) :: a_name
1366 IF ( PRESENT(categoryappend)) THEN
1367 CALL l4f_launcher(a_name,a_name_append= &
1368 trim(subcategory)// "."//trim(categoryappend))
1370 CALL l4f_launcher(a_name,a_name_append=trim(subcategory))
1372 category=l4f_category_get(a_name)
1374 CALL import(gridinfo, filename=filename, categoryappend=categoryappend)
1376 IF (gridinfo%arraysize > 0) THEN
1378 CALL import(this, gridinfo, dup_mode=dup_mode, clone=.true., decode=decode, &
1379 time_definition=time_definition, anavar=anavar, &
1380 categoryappend=categoryappend)
1382 CALL l4f_category_log(category,l4f_info, "deleting gridinfo")
1383 CALL delete(gridinfo)
1386 CALL l4f_category_log(category,l4f_info, "file does not contain gridded data")
1390 CALL l4f_category_delete(category)
1392 END SUBROUTINE volgrid6d_import_from_file
1402 SUBROUTINE volgrid6d_export_to_file(this, filename, gaid_template, categoryappend)
1403 TYPE(volgrid6d) :: this(:)
1404 CHARACTER(len=*), INTENT(in) :: filename
1405 TYPE(grid_id), INTENT(in), OPTIONAL :: gaid_template
1406 character(len=*), INTENT(in), OPTIONAL :: categoryappend
1408 TYPE(arrayof_gridinfo) :: gridinfo
1410 CHARACTER(len=512) :: a_name
1412 IF ( PRESENT(categoryappend)) THEN
1413 CALL l4f_launcher(a_name,a_name_append=trim(subcategory)// "."//trim(categoryappend))
1415 CALL l4f_launcher(a_name,a_name_append=trim(subcategory))
1417 category=l4f_category_get(a_name)
1420 CALL l4f_category_log(category,l4f_debug, "start export to file")
1423 CALL l4f_category_log(category,l4f_info, "writing volgrid6d to grib file: "//trim(filename))
1426 CALL export(this, gridinfo, gaid_template=gaid_template, clone=.true.)
1427 IF (gridinfo%arraysize > 0) THEN
1428 CALL export(gridinfo, filename)
1429 CALL delete(gridinfo)
1436 CALL l4f_category_delete(category)
1438 END SUBROUTINE volgrid6d_export_to_file
1444 SUBROUTINE volgrid6dv_delete(this)
1445 TYPE(volgrid6d), POINTER :: this(:)
1449 IF ( ASSOCIATED(this)) THEN
1450 DO i = 1, SIZE(this)
1452 CALL l4f_category_log(this(i)%category,l4f_debug, &
1453 "delete volgrid6d vector index: "//trim(to_char(i)))
1455 CALL delete(this(i))
|