libsim Versione 7.2.6

◆ display_volgrid6d()

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

Display object on screen.

Show brief content on screen.

Parametri
[in]thisobject to display

Definizione alla linea 3487 del file volgrid6d_class.F90.

3488type(volgrid6d),intent(out) :: vg6dout !< output volume
3489type(vol7d_level),intent(in) :: roundlevel(:) !< new level list to use for rounding
3490type(vol7d_timerange),intent(in) :: roundtimerange(:) !< new timerange list to use for rounding
3491logical,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)
3492
3493integer :: nlevel,ntime,ntimerange,nvar,ilevel,itimerange,ivar,indl,indt,itime,nx,ny
3494real,allocatable :: vol2d(:,:)
3495
3496nx=vg6din%griddim%dim%nx
3497ny=vg6din%griddim%dim%ny
3498nlevel=count_distinct(roundlevel,back=.true.)
3499ntime=size(vg6din%time)
3500ntimerange=count_distinct(roundtimerange,back=.true.)
3501nvar=size(vg6din%var)
3502
3503call init(vg6dout, vg6din%griddim, vg6din%time_definition, categoryappend="generated by vg6d_reduce")
3504call volgrid6d_alloc(vg6dout, vg6din%griddim%dim, ntime, nlevel, ntimerange, nvar)
3505
3506if ( ASSOCIATED(vg6din%voldati) .or. optio_log(merge)) then
3507 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.true.)
3508 allocate(vol2d(nx,ny))
3509else
3510 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.false.)
3511end if
3512
3513vg6dout%time=vg6din%time
3514vg6dout%var=vg6din%var
3515vg6dout%timerange=pack_distinct(roundtimerange,ntimerange,back=.true.)
3516vg6dout%level=pack_distinct(roundlevel,nlevel,back=.true.)
3517! sort modified dimensions
3518CALL sort(vg6dout%timerange)
3519CALL sort(vg6dout%level)
3520
3521do ilevel=1,size(vg6din%level)
3522 indl=index(vg6dout%level,roundlevel(ilevel))
3523 do itimerange=1,size(vg6din%timerange)
3524 indt=index(vg6dout%timerange,roundtimerange(itimerange))
3525 do ivar=1, nvar
3526 do itime=1,ntime
3527
3528 if ( ASSOCIATED(vg6din%voldati)) then
3529 vol2d=vg6din%voldati(:,:,ilevel,itime,itimerange,ivar)
3530 end if
3531
3532 if (optio_log(merge)) then
3533
3534 if ( .not. ASSOCIATED(vg6din%voldati)) then
3535 CALL grid_id_decode_data(vg6din%gaid(ilevel,itime,itimerange,ivar), vol2d)
3536 end if
3537
3538 !! merge present data point by point
3539 where (.not. c_e(vg6dout%voldati(:,:,indl,itime,indt,ivar)))
Index method.

Generated with Doxygen.