libsim Versione 8.0.0

◆ display_volgrid6d()

subroutine display_volgrid6d ( type(volgrid6d), intent(in) this)

Display object on screen.

Show brief content on screen.

Parametri
[in]thisobject to display

Definizione alla linea 3497 del file volgrid6d_class.F90.

3498type(volgrid6d),intent(out) :: vg6dout !< output volume
3499type(vol7d_level),intent(in) :: roundlevel(:) !< new level list to use for rounding
3500type(vol7d_timerange),intent(in) :: roundtimerange(:) !< new timerange list to use for rounding
3501logical,intent(in),optional :: merge !< if there are data on equal levels or timeranges will be merged POINT BY POINT with priority for the first data found ordered by icreasing var index (require to decode all the data)
3502
3503integer :: nlevel,ntime,ntimerange,nvar,ilevel,itimerange,ivar,indl,indt,itime,nx,ny
3504real,allocatable :: vol2d(:,:)
3505
3506nx=vg6din%griddim%dim%nx
3507ny=vg6din%griddim%dim%ny
3508nlevel=count_distinct(roundlevel,back=.true.)
3509ntime=size(vg6din%time)
3510ntimerange=count_distinct(roundtimerange,back=.true.)
3511nvar=size(vg6din%var)
3512
3513call init(vg6dout, vg6din%griddim, vg6din%time_definition, categoryappend="generated by vg6d_reduce")
3514call volgrid6d_alloc(vg6dout, vg6din%griddim%dim, ntime, nlevel, ntimerange, nvar)
3515
3516if ( ASSOCIATED(vg6din%voldati) .or. optio_log(merge)) then
3517 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.true.)
3518 allocate(vol2d(nx,ny))
3519else
3520 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.false.)
3521end if
3522
3523vg6dout%time=vg6din%time
3524vg6dout%var=vg6din%var
3525vg6dout%timerange=pack_distinct(roundtimerange,ntimerange,back=.true.)
3526vg6dout%level=pack_distinct(roundlevel,nlevel,back=.true.)
3527! sort modified dimensions
3528CALL sort(vg6dout%timerange)
3529CALL sort(vg6dout%level)
3530
3531do ilevel=1,size(vg6din%level)
3532 indl=index(vg6dout%level,roundlevel(ilevel))
3533 do itimerange=1,size(vg6din%timerange)
3534 indt=index(vg6dout%timerange,roundtimerange(itimerange))
3535 do ivar=1, nvar
3536 do itime=1,ntime
3537
3538 if ( ASSOCIATED(vg6din%voldati)) then
3539 vol2d=vg6din%voldati(:,:,ilevel,itime,itimerange,ivar)
3540 end if
3541
3542 if (optio_log(merge)) then
3543
3544 if ( .not. ASSOCIATED(vg6din%voldati)) then
3545 CALL grid_id_decode_data(vg6din%gaid(ilevel,itime,itimerange,ivar), vol2d)
3546 end if
3547
3548 !! merge present data point by point
3549 where (.not. c_e(vg6dout%voldati(:,:,indl,itime,indt,ivar)))
Index method.

Generated with Doxygen.