libsim Versione 7.2.0

◆ volgrid6d_alloc()

subroutine, public 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 410 del file volgrid6d_class.F90.

411 CALL raise_fatal_error()
412ENDIF
413
414END SUBROUTINE volgrid6d_alloc_vol
415
416
430SUBROUTINE volgrid_get_vol_2d(this, ilevel, itime, itimerange, ivar, voldati)
431TYPE(volgrid6d),INTENT(in) :: this
432INTEGER,INTENT(in) :: ilevel
433INTEGER,INTENT(in) :: itime
434INTEGER,INTENT(in) :: itimerange
435INTEGER,INTENT(in) :: ivar
436REAL,POINTER :: voldati(:,:)
437
438IF (ASSOCIATED(this%voldati)) THEN
439 voldati => this%voldati(:,:,ilevel,itime,itimerange,ivar)
440 RETURN
441ELSE
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)
446ENDIF
447
448END SUBROUTINE volgrid_get_vol_2d
449
450
464SUBROUTINE volgrid_get_vol_3d(this, itime, itimerange, ivar, voldati)
465TYPE(volgrid6d),INTENT(in) :: this
466INTEGER,INTENT(in) :: itime
467INTEGER,INTENT(in) :: itimerange
468INTEGER,INTENT(in) :: ivar
469REAL,POINTER :: voldati(:,:,:)
470
471INTEGER :: ilevel
472
473IF (ASSOCIATED(this%voldati)) THEN
474 voldati => this%voldati(:,:,:,itime,itimerange,ivar)
475 RETURN
476ELSE
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
484ENDIF
485
486END SUBROUTINE volgrid_get_vol_3d
487
488
500SUBROUTINE volgrid_set_vol_2d(this, ilevel, itime, itimerange, ivar, voldati)
501TYPE(volgrid6d),INTENT(inout) :: this
502INTEGER,INTENT(in) :: ilevel
503INTEGER,INTENT(in) :: itime
504INTEGER,INTENT(in) :: itimerange
505INTEGER,INTENT(in) :: ivar
506REAL,INTENT(in) :: voldati(:,:)
507
508IF (ASSOCIATED(this%voldati)) THEN
509 RETURN
510ELSE

Generated with Doxygen.