|
◆ volgrid_get_vol_3d()
subroutine, public volgrid6d_class::volgrid_get_vol_3d |
( |
type(volgrid6d), intent(in) |
this, |
|
|
integer, intent(in) |
itime, |
|
|
integer, intent(in) |
itimerange, |
|
|
integer, intent(in) |
ivar, |
|
|
real, dimension(:,:,:), pointer |
voldati |
|
) |
| |
Return a 3-d pointer to a x-y-z slice of a volume.
This method works both with volumes having allocated and non-allocated thisvoldati array, and it returns a pointer to a 3-d slice either from the allocated thisvoldati array or from the grid_id object on file or in memory. In the second case the pointer should be either ALLOCATE'd to the expected size or NULLIFY'ed, and if NULLIFY'ed, it is allocated within the method, thus it will have to be deallocated by the caller when not in use anymore. Since this method may be called many times by a program, it is optimized for speed and it does not make any check about the matching size of the pointer and the array or about the allocation status of this, so it should be called only when everything has been checked to be in good shape.
- Parametri
-
[in] | this | object from which the slice has to be retrieved |
[in] | itime | index of time level of the slice |
[in] | itimerange | index of timerange of the slice |
[in] | ivar | index of physical variable of the slice |
| voldati | pointer to the data, if thisvoldati is already allocated, it will just point to the requested slice, otherwise it will be allocated if and only if it is nullified on entry |
Definizione alla linea 663 del file volgrid6d_class.F90.
663 if (.not. opened) then 664 inquire(file=lfilename,exist=exist) 665 if (exist) CALL raise_error( 'file exist; cannot open new file') 666 if (.not.exist) open (unit=lunit,file=lfilename,form= "UNFORMATTED") 670 if ( associated(this%time)) ntime= size(this%time) 671 if ( associated(this%timerange)) ntimerange= size(this%timerange) 672 if ( associated(this%level)) nlevel= size(this%level) 673 if ( associated(this%var)) nvar= size(this%var) 676 write(unit=lunit)ldescription 677 write(unit=lunit)tarray 679 call write_unit( this%griddim,lunit) 680 write(unit=lunit) ntime, ntimerange, nlevel, nvar 683 if ( associated(this%time)) call write_unit(this%time, lunit)
|