libsim Versione 7.2.4
|
◆ display_volgrid6d()
Display object on screen. Show brief content on screen.
Definizione alla linea 3439 del file volgrid6d_class.F90. 3440type(volgrid6d),intent(out) :: vg6dout
3441type(vol7d_level),intent(in) :: roundlevel(:)
3442type(vol7d_timerange),intent(in) :: roundtimerange(:)
3443logical,intent(in),optional :: merge
3444
3445integer :: nlevel,ntime,ntimerange,nvar,ilevel,itimerange,ivar,indl,indt,itime,nx,ny
3446real,allocatable :: vol2d(:,:)
3447
3448nx=vg6din%griddim%dim%nx
3449ny=vg6din%griddim%dim%ny
3450nlevel=count_distinct(roundlevel,back=.true.)
3451ntime=size(vg6din%time)
3452ntimerange=count_distinct(roundtimerange,back=.true.)
3453nvar=size(vg6din%var)
3454
3455call init(vg6dout, vg6din%griddim, vg6din%time_definition, categoryappend="generated by vg6d_reduce")
3456call volgrid6d_alloc(vg6dout, vg6din%griddim%dim, ntime, nlevel, ntimerange, nvar)
3457
3458if ( ASSOCIATED(vg6din%voldati) .or. optio_log(merge)) then
3459 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.true.)
3460 allocate(vol2d(nx,ny))
3461else
3462 call volgrid6d_alloc_vol(vg6dout,inivol=.true.,decode=.false.)
3463end if
3464
3465vg6dout%time=vg6din%time
3466vg6dout%var=vg6din%var
3467vg6dout%timerange=pack_distinct(roundtimerange,ntimerange,back=.true.)
3468vg6dout%level=pack_distinct(roundlevel,nlevel,back=.true.)
3469! sort modified dimensions
3470CALL sort(vg6dout%timerange)
3471CALL sort(vg6dout%level)
3472
3473do ilevel=1,size(vg6din%level)
3474 indl=index(vg6dout%level,roundlevel(ilevel))
3475 do itimerange=1,size(vg6din%timerange)
3476 indt=index(vg6dout%timerange,roundtimerange(itimerange))
3477 do ivar=1, nvar
3478 do itime=1,ntime
3479
3480 if ( ASSOCIATED(vg6din%voldati)) then
3481 vol2d=vg6din%voldati(:,:,ilevel,itime,itimerange,ivar)
3482 end if
3483
3484 if (optio_log(merge)) then
3485
3486 if ( .not. ASSOCIATED(vg6din%voldati)) then
3487 CALL grid_id_decode_data(vg6din%gaid(ilevel,itime,itimerange,ivar), vol2d)
3488 end if
3489
3490 !! merge present data point by point
3491 where (.not. c_e(vg6dout%voldati(:,:,indl,itime,indt,ivar)))
|