libsim  Versione 7.1.6

◆ volgrid6d_alloc()

subroutine, public volgrid6d_class::volgrid6d_alloc ( type(volgrid6d), intent(inout)  this,
type(grid_dim), intent(in), optional  dim,
integer, intent(in), optional  ntime,
integer, intent(in), optional  nlevel,
integer, intent(in), optional  ntimerange,
integer, intent(in), optional  nvar,
logical, intent(in), optional  ini 
)

Allocate the dimension descriptors of the volgrid6d object.

This method allocates the horizontal grid descriptor and the one dimensional arrays of the dimensions

  • time
  • vertical level
  • timerange
  • physical variable

This method should be explicitly used only in rare cases, it is usually called implicitly through the import interface.

Parametri
[in,out]thisobject whose decriptors should be allocated
[in]dimhorizontal grid size X, Y
[in]ntimenumber of time levels
[in]nlevelnumber of vertical levels
[in]ntimerangenumber of different timeranges
[in]nvarnumber of physical variables
[in]iniif provided and .TRUE., for each allocated dimension descriptor the constructor is called without extra parameters, thus initializing everything as missing value

Definizione alla linea 416 del file volgrid6d_class.F90.

417 
430 SUBROUTINE volgrid_get_vol_2d(this, ilevel, itime, itimerange, ivar, voldati)
431 TYPE(volgrid6d),INTENT(in) :: this
432 INTEGER,INTENT(in) :: ilevel
433 INTEGER,INTENT(in) :: itime
434 INTEGER,INTENT(in) :: itimerange
435 INTEGER,INTENT(in) :: ivar
436 REAL,POINTER :: voldati(:,:)
437 
438 IF (ASSOCIATED(this%voldati)) THEN
439  voldati => this%voldati(:,:,ilevel,itime,itimerange,ivar)
440  RETURN
441 ELSE
442  IF (.NOT.ASSOCIATED(voldati)) THEN
443  ALLOCATE(voldati(this%griddim%dim%nx,this%griddim%dim%ny))
444  ENDIF
445  CALL grid_id_decode_data(this%gaid(ilevel,itime,itimerange,ivar), voldati)
446 ENDIF
447 
448 END SUBROUTINE volgrid_get_vol_2d
449 
450 
464 SUBROUTINE volgrid_get_vol_3d(this, itime, itimerange, ivar, voldati)
465 TYPE(volgrid6d),INTENT(in) :: this
466 INTEGER,INTENT(in) :: itime
467 INTEGER,INTENT(in) :: itimerange
468 INTEGER,INTENT(in) :: ivar
469 REAL,POINTER :: voldati(:,:,:)
470 
471 INTEGER :: ilevel
472 
473 IF (ASSOCIATED(this%voldati)) THEN
474  voldati => this%voldati(:,:,:,itime,itimerange,ivar)
475  RETURN
476 ELSE
477  IF (.NOT.ASSOCIATED(voldati)) THEN
478  ALLOCATE(voldati(this%griddim%dim%nx,this%griddim%dim%ny,SIZE(this%level)))
479  ENDIF
480  DO ilevel = 1, SIZE(this%level)
481  CALL grid_id_decode_data(this%gaid(ilevel,itime,itimerange,ivar), &
482  voldati(:,:,ilevel))
483  ENDDO
484 ENDIF
485 
486 END SUBROUTINE volgrid_get_vol_3d
487 
488 
500 SUBROUTINE volgrid_set_vol_2d(this, ilevel, itime, itimerange, ivar, voldati)
501 TYPE(volgrid6d),INTENT(inout) :: this
502 INTEGER,INTENT(in) :: ilevel
503 INTEGER,INTENT(in) :: itime
504 INTEGER,INTENT(in) :: itimerange
505 INTEGER,INTENT(in) :: ivar
506 REAL,INTENT(in) :: voldati(:,:)
507 
508 IF (ASSOCIATED(this%voldati)) THEN
509  RETURN
510 ELSE
511  CALL grid_id_encode_data(this%gaid(ilevel,itime,itimerange,ivar), voldati)
512 ENDIF
513 
514 END SUBROUTINE volgrid_set_vol_2d
515 
516 

Generated with Doxygen.