libsim  Versione7.2.6

◆ volgrid6d_alloc_vol()

subroutine, public volgrid6d_class::volgrid6d_alloc_vol ( type(volgrid6d), intent(inout)  this,
logical, intent(in), optional  ini,
logical, intent(in), optional  inivol,
logical, intent(in), optional  decode 
)

Allocate the data array of the volgrid6d object.

This method allocates the main 6-dimensional data array thisvoldati and the 4-dimensional grid_id array thisgaid with a shape dictated by the previous call(s) to vol7d_alloc(). if any descriptor (except horizontal grid) has not been allocated yet, it is allocated here with a size of 1. 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]iniif provided and .TRUE., for each dimension descriptor not yet allocated and allocated here the constructor is called without extra parameters, thus initializing the element as missing value
[in]inivolif provided and .FALSE., the allocated volumes will not be initialized to missing values
[in]decodeif provided and .TRUE., the thisvoldati volume is allocated, otherwise only thisgaid will be allocated

Definizione alla linea 533 del file volgrid6d_class.F90.

533 !! good shape.
534 SUBROUTINE volgrid_set_vol_3d(this, itime, itimerange, ivar, voldati)
535 TYPE(volgrid6d),INTENT(inout) :: this
536 INTEGER,INTENT(in) :: itime
537 INTEGER,INTENT(in) :: itimerange
538 INTEGER,INTENT(in) :: ivar
539 REAL,INTENT(in) :: voldati(:,:,:)
540 
541 INTEGER :: ilevel
542 
543 IF (ASSOCIATED(this%voldati)) THEN
544  RETURN
545 ELSE
546 !$OMP PARALLEL DEFAULT(SHARED)
547 !$OMP MASTER
548  DO ilevel = 1, SIZE(this%level)
549 !$OMP TASK FIRSTPRIVATE(ilevel)
550  CALL grid_id_encode_data(this%gaid(ilevel,itime,itimerange,ivar), &
551  voldati(:,:,ilevel))
552 !$OMP END TASK
553  ENDDO
554 !$OMP END MASTER
555 !$OMP END PARALLEL
556 ENDIF
557 
558 END SUBROUTINE volgrid_set_vol_3d
559 
560 
564 SUBROUTINE volgrid6d_delete(this)
565 TYPE(volgrid6d),INTENT(inout) :: this
566 
567 INTEGER :: i, ii, iii, iiii
568 
569 #ifdef DEBUG
570 call l4f_category_log(this%category,l4f_debug,"delete")
571 #endif
572 
573 if (associated(this%gaid))then
574 
575  DO i=1 ,SIZE(this%gaid,1)
576  DO ii=1 ,SIZE(this%gaid,2)
577  DO iii=1 ,SIZE(this%gaid,3)
578  DO iiii=1 ,SIZE(this%gaid,4)
579  CALL delete(this%gaid(i,ii,iii,iiii))
580  ENDDO
581  ENDDO
582  ENDDO
583  ENDDO
584  DEALLOCATE(this%gaid)
585 
586 end if
587 
588 call delete(this%griddim)
589 
590 ! call delete(this%time)
591 ! call delete(this%timerange)
592 ! call delete(this%level)
593 ! call delete(this%var)
594 
595 if (associated( this%time )) deallocate(this%time)
596 if (associated( this%timerange )) deallocate(this%timerange)
597 if (associated( this%level )) deallocate(this%level)
598 if (associated( this%var )) deallocate(this%var)
599 
600 if (associated(this%voldati))deallocate(this%voldati)
601 
602 
603  !chiudo il logger
604 call l4f_category_delete(this%category)
605 
606 END SUBROUTINE volgrid6d_delete
607 
608 

Generated with Doxygen.