libsim Versione 7.2.4
|
◆ volgrid6d_alloc()
Allocate the dimension descriptors of the volgrid6d object. This method allocates the horizontal grid descriptor and the one dimensional arrays of the dimensions
This method should be explicitly used only in rare cases, it is usually called implicitly through the import interface.
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
|