libsim  Versione6.3.0

◆ volgrid6d_read_from_file()

subroutine volgrid6d_class::volgrid6d_read_from_file ( type(volgrid6d), intent(out)  this,
integer, intent(inout), optional  unit,
character(len=*), intent(in), optional  filename,
character(len=*), intent(out), optional  description,
integer, dimension(8), intent(out), optional  tarray,
character(len=*), intent(out), optional  filename_auto 
)
private

Lettura da file di un volume Volgrid6d.

Lettura da file unformatted di un intero volume Volgrid6d. Questa subroutine comprende volgrid6d_alloc e volgrid6d_alloc_vol. Il file puo' essere aperto opzionalmente dall'utente. Si possono passare opzionalmente unità e nome del file altrimenti assegnati internamente a dei default; se assegnati internamente tali parametri saranno in output.

Parametri
[out]thisVolume volgrid6d da leggere
[in,out]unitunità su cui è stato aperto un file; se =0 rielaborato internamente (default = elaborato internamente con getunit)
[in]filenamenome del file eventualmente da aprire (default = nome dell'eseguibile.v7d)
[out]filename_autonome del file generato se "filename" è omesso
[out]descriptiondescrizione del volume letto
[out]tarrayvettore come definito da "date_and_time" della data di scrittura del volume

Definizione alla linea 921 del file volgrid6d_class.F90.

921  dup = .false.
922  IF (c_e(this%gaid(ilevel,itime,itimerange,ivar))) THEN
923  dup = .true.
924  CALL l4f_category_log(this%category,l4f_warn,"gaid exist: grib duplicated")
925 ! avoid memory leaks
926  IF (optio_log(clone)) CALL delete(this%gaid(ilevel,itime,itimerange,ivar))
927  ENDIF
928 
929  IF (optio_log(clone)) THEN
930  CALL copy(gridinfo%gaid, this%gaid(ilevel,itime,itimerange,ivar))
931 #ifdef DEBUG
932  CALL l4f_category_log(this%category,l4f_debug,"cloning to a new gaid")
933 #endif
934  ELSE
935  this%gaid(ilevel,itime,itimerange,ivar) = gridinfo%gaid
936  ENDIF
937 
938  IF (ASSOCIATED(this%voldati))THEN
939  IF (.NOT.dup .OR. ldup_mode == 0) THEN
940  this%voldati(:,:,ilevel,itime,itimerange,ivar) = decode_gridinfo(gridinfo)
941  ELSE IF (ldup_mode == 1) THEN
942  tmpgrid = decode_gridinfo(gridinfo) ! f2003 automatic allocation
943  WHERE(c_e(tmpgrid))
944  this%voldati(:,:,ilevel,itime,itimerange,ivar) = tmpgrid(:,:)
945  END WHERE
946  ELSE IF (ldup_mode == 2) THEN
947  WHERE(.NOT.c_e(this%voldati(:,:,ilevel,itime,itimerange,ivar)))
948  this%voldati(:,:,ilevel,itime,itimerange,ivar) = decode_gridinfo(gridinfo)
949  END WHERE
950  ENDIF
951  ENDIF
952 
953  ELSE
954  CALL l4f_category_log(this%category,l4f_error, &
955  "gaid not allocated, you probably need to call volgrid6d_alloc_vol first")
956  CALL raise_error()
957  RETURN
958  ENDIF
959  ENDDO
960 ENDDO
961 
962 
963 END SUBROUTINE import_from_gridinfo
964 
965 
970 SUBROUTINE export_to_gridinfo(this, gridinfo, itime, itimerange, ilevel, ivar, &
971  gaid_template, clone)
972 TYPE(volgrid6d),INTENT(in) :: this
973 TYPE(gridinfo_def),INTENT(inout) :: gridinfo
974 INTEGER :: itime
975 INTEGER :: itimerange
976 INTEGER :: ilevel
977 INTEGER :: ivar
978 TYPE(grid_id),INTENT(in),OPTIONAL :: gaid_template
979 LOGICAL,INTENT(in),OPTIONAL :: clone
980 
981 TYPE(grid_id) :: gaid
982 LOGICAL :: usetemplate
983 REAL,POINTER :: voldati(:,:)
984 TYPE(datetime) :: correctedtime
985 
986 #ifdef DEBUG
987 CALL l4f_category_log(this%category,L4F_DEBUG,"export_to_gridinfo")
988 #endif
989 
990 IF (.NOT.c_e(this%gaid(ilevel,itime,itimerange,ivar))) THEN
991 #ifdef DEBUG
992  CALL l4f_category_log(this%category,l4f_debug,"empty gaid found, skipping export")
993 #endif
994  RETURN
995 ENDIF
996 
997 usetemplate = .false.
998 IF (PRESENT(gaid_template)) THEN
999  CALL copy(gaid_template, gaid)
1000 #ifdef DEBUG
1001  CALL l4f_category_log(this%category,l4f_debug,"template cloned to a new gaid")
1002 #endif
Distruttori per le 2 classi.

Generated with Doxygen.