libsim  Versione 7.2.1

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

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

Generated with Doxygen.