libsim  Versione7.2.6

◆ volgrid6d_read_from_file()

subroutine 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 
)

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 915 del file volgrid6d_class.F90.

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

Generated with Doxygen.