libsim  Versione8.0.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 920 del file volgrid6d_class.F90.

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

Generated with Doxygen.