libsim Versione 7.1.11
|
◆ export_to_gridinfov()
Export a volgrid6d object to an arrayof_gridinfo object. The multidimensional volgrid6d structure is serialized into a one-dimensional array of gridinfo_def objects, which is allocated to the proper size if not already allocated, or it is extended keeping the old data if any.
Definizione alla linea 1414 del file volgrid6d_class.F90. 1415! Internal method for performing grid to grid computations
1416SUBROUTINE volgrid6d_transform_compute(this, volgrid6d_in, volgrid6d_out, &
1417 lev_out, var_coord_vol, clone)
1418TYPE(grid_transform),INTENT(in) :: this ! oggetto di trasformazione per il grigliato
1419type(volgrid6d), INTENT(in) :: volgrid6d_in ! oggetto da trasformare
1420type(volgrid6d), INTENT(inout) :: volgrid6d_out ! oggetto trasformato; deve essere completo (init, alloc, alloc_vol)
1421TYPE(vol7d_level),INTENT(in),OPTIONAL :: lev_out(:) ! vol7d_level object defining target vertical grid, for vertical interpolations
1422INTEGER,INTENT(in),OPTIONAL :: var_coord_vol ! index of variable defining vertical coordinate values in input volume
1423LOGICAL,INTENT(in),OPTIONAL :: clone ! se fornito e \c .TRUE., clona i gaid da volgrid6d_in a volgrid6d_out
1424
1425INTEGER :: ntime, ntimerange, inlevel, onlevel, nvar, &
1426 itime, itimerange, ilevel, ivar, levshift, levused, lvar_coord_vol, spos
1427REAL,POINTER :: voldatiin(:,:,:), voldatiout(:,:,:), coord_3d_in(:,:,:)
1428TYPE(vol7d_level) :: output_levtype
1429
1430
1431#ifdef DEBUG
1432call l4f_category_log(volgrid6d_in%category,l4f_debug,"start volgrid6d_transform_compute")
1433#endif
1434
1435ntime=0
1436ntimerange=0
1437inlevel=0
1438onlevel=0
1439nvar=0
1440lvar_coord_vol = optio_i(var_coord_vol)
1441
1442if (associated(volgrid6d_in%time))then
1443 ntime=size(volgrid6d_in%time)
1444 volgrid6d_out%time=volgrid6d_in%time
1445end if
1446
1447if (associated(volgrid6d_in%timerange))then
1448 ntimerange=size(volgrid6d_in%timerange)
1449 volgrid6d_out%timerange=volgrid6d_in%timerange
1450end if
1451
1452IF (ASSOCIATED(volgrid6d_in%level))THEN
1453 inlevel=SIZE(volgrid6d_in%level)
1454ENDIF
1455IF (PRESENT(lev_out)) THEN
1456 onlevel=SIZE(lev_out)
1457 volgrid6d_out%level=lev_out
|