libsim Versione 8.0.0

◆ gridinfo_import_from_file()

subroutine gridinfo_import_from_file ( type(arrayof_gridinfo) this,
character(len=*), intent(in) filename,
character(len=*), intent(in), optional categoryappend )
private

Import an array of gridinfo from a file.

It receives a (possibly unallocated) array of gridinfo objects which will be extended by a number of elements equal to the number of gridded messages/bands found in the file provided and it will be filled with all the data found. In case of error, the gridinfo object will not be allocated, so the success can be tested by checking thisarraysize.

Parametri
thisarray of gridinfo objects which will be allocated/extended and into which data will be imported
[in]filenamename of file to open and import, in the form [driver:]pathname
[in]categoryappendappend this suffix to log4fortran namespace category

Definizione alla linea 894 del file gridinfo_class.F90.

895 ELSE ! point in time
896 statproc = 254
897 p2 = 0
898
899 ENDIF
900
901ELSE
902
903 CALL l4f_log(l4f_error,'GribEditionNumber '//t2c(editionnumber)//' not supported')
904 CALL raise_error()
905
906ENDIF
907
908CALL init(this, statproc, p1, p2)
909
910END SUBROUTINE timerange_import_gribapi
911
912
913SUBROUTINE timerange_export_gribapi(this, gaid, reftime)
914TYPE(vol7d_timerange),INTENT(in) :: this ! vol7d_timerange object
915INTEGER,INTENT(in) :: gaid ! grib_api id of the grib loaded in memory to export
916TYPE(datetime) :: reftime ! reference time of data, used for coding correct end of statistical processing period in grib2
917
918INTEGER :: EditionNumber, centre, tri, currentunit, unit, p1_g1, p2_g1, p1, p2, pdtn
919CHARACTER(len=8) :: env_var
920LOGICAL :: g2cosmo_behavior
921
922CALL grib_get(gaid,'GRIBEditionNumber',editionnumber)
923
924IF (editionnumber == 1 ) THEN
925! Convert vol7d_timerange members to grib1 with reasonable time unit
926 CALL grib_get(gaid,'indicatorOfUnitOfTimeRange',currentunit)
927 CALL timerange_v7d_to_g1(this%timerange, this%p1, this%p2, &
928 tri, p1_g1, p2_g1, unit)
929! Set the native keys
930 CALL grib_set(gaid,'timeRangeIndicator',tri)
931 CALL grib_set(gaid,'P1',p1_g1)
932 CALL grib_set(gaid,'P2',p2_g1)
933 CALL grib_set(gaid,'indicatorOfUnitOfTimeRange',unit)
934
935ELSE IF (editionnumber == 2) THEN
936 CALL grib_get(gaid,'productDefinitionTemplateNumber', pdtn)
937
938 IF (this%timerange == 254) THEN ! point in time -> template 4.0
939 IF (pdtn < 0 .OR. pdtn > 7) &
940 CALL grib_set(gaid,'productDefinitionTemplateNumber', 0)
941! Set reasonable time unit
942 CALL timerange_v7d_to_g2(this%p1,p1,unit)
943! Set the native keys
944 CALL grib_set(gaid,'indicatorOfUnitOfTimeRange',unit)
945 CALL grib_set(gaid,'forecastTime',p1)
946
947 ELSE IF (this%timerange >= 0 .AND. this%timerange < 254) THEN
948! statistically processed -> template 4.8
949 IF (pdtn < 8 .OR. pdtn > 14) &
950 CALL grib_set(gaid,'productDefinitionTemplateNumber', 8)
951
952 IF (this%p1 >= this%p2) THEN ! forecast-like
953! Set reasonable time unit
954 CALL timerange_v7d_to_g2(this%p1-this%p2,p1,unit)
955 CALL grib_set(gaid,'indicatorOfUnitOfTimeRange',unit)
956 CALL grib_set(gaid,'forecastTime',p1)
957 CALL code_endoftimeinterval(reftime+timedelta_new(sec=this%p1))

Generated with Doxygen.